¿Cómo puedo especificar una gema local en mi Gemfile?
Me gustaría que Bundler cargara una gema local. ¿Hay alguna opción para eso? O tengo que mover la carpeta gema en el .directorio del paquete?
6 answers
Creo que puedes hacer esto:
gem "foo", :path => "/path/to/foo"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-20 08:51:32
Además de especificar la ruta (como Jimmy mencionó), también puede forzar a Bundler a usar una gema local solo para su entorno utilizando la siguiente opción de configuración:
$ bundle config local.GEM_NAME /path/to/local/git/repository
Esto es extremadamente útil si estás desarrollando dos gemas o una gema y una aplicación rails lado a lado.
Tenga en cuenta que esto solo funciona cuando ya está usando git para su dependencia, por ejemplo:
# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In your terminal
$ bundle config local.rack ~/Work/git/rack
Como se ve en los documentos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-02 11:11:50
También puedes hacer referencia a una gema local con git si estás trabajando en ella.
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
Entonces, si cambia, corro
bundle exec gem uninstall foo
bundle update foo
Pero no estoy seguro de que todo el mundo necesite ejecutar estos dos pasos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-25 09:03:44
Para usar el repositorio de gemas local en un proyecto Rails, siga los siguientes pasos:
-
Compruebe si su carpeta gem es un repositorio git (el comando se ejecuta en la carpeta gem)
git rev-parse --is-inside-work-tree
-
Obteniendo la ruta del repositorio (el comando se ejecuta en la carpeta gem)
git rev-parse --show-toplevel
-
Configurando un override local para la aplicación rails
bundle config local.GEM_NAME /path/to/local/git/repository
Donde
GEM_NAME
es el nombre de tu gema y/path/to/local/git/repository
es la salida del comando en point2
-
En su solicitud
Gemfile
agregue la siguiente línea:gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
-
Corriendo {[12] } debería dar algo como esto:
Using GEM_NAME (0.0.1) from git://github.com/GEM_NAME/GEM_NAME.git (at /path/to/local/git/repository)
Donde
GEM_NAME
es el nombre de tu gema y/path/to/local/git/repository
desde el punto2
-
Finalmente, ejecuta
bundle list
, nogem list
y deberías ver algo como esto:GEM_NAME (0.0.1 5a68b88)
Donde
GEM_NAME
es el nombre de tu gema
Algunos casos importantes que estoy observando usando:
Rails 4.0.2
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
Ubuntu 13.10
RubyMine 6.0.3
- Parece que
RubyMine
no está mostrando gemas locales como una biblioteca externa. Puede encontrar más información sobre el error aquí y aquí - Cuando estoy cambiando algo en la gema local, para ser cargado en la aplicación rails debo
stop/start
el servidor rails -
Si estoy cambiando el
version
de la gema,stopping/starting
el servidor Rails me da un error. Para arreglarlo, estoy especificando la versión de gema en los rieles aplicaciónGemfile
así:gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-03 15:49:11
Puede hacer referencia a las gemas con source: source: 'https://source.com', git repository (:github => 'git/url')
y con local path :path => '.../path/gem_name'
.
Puede obtener más información sobre Gemfiles y cómo usarlos en este artículo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-09 15:33:59
Si quieres la rama también:
gem 'foo', path: "point/to/your/path", branch: "branch-name"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-18 22:27:04