ruby-on-rails - instalar - ruby gemfile
¿Cómo puedo especificar una gema local en mi Gemfile? (6)
Además de especificar la ruta (como mencionó Jimmy), también puede forzar a Bundler a usar una gema local para su entorno usando 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 de rieles una al lado de la otra.
Sin embargo, 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 .
Me gustaría que Bundler cargara una gema local. ¿Hay una opción para eso? ¿O tengo que mover la carpeta de gemas al directorio .bundle?
Creo que puedes hacer esto:
gem "foo", :path => "/path/to/foo"
Para utilizar el repositorio local de gemas en un proyecto de Rails, siga los pasos a continuación:
Compruebe si su carpeta de gemas es un repositorio de git (el comando se ejecuta en la carpeta de gemas)
git rev-parse --is-inside-work-tree
Obtención de la ruta del repositorio (el comando se ejecuta en la carpeta gema)
git rev-parse --show-toplevel
Configuración de una anulación local para la aplicación de rieles
bundle config local.GEM_NAME /path/to/local/git/repository
donde
GEM_NAME
es el nombre de su gema y/path/to/local/git/repository
es la salida del comando en el punto2
En su aplicación
Gemfile
agregue la siguiente línea:gem ''GEM_NAME'', :github => ''GEM_NAME/GEM_NAME'', :branch => ''master''
La
bundle install
ejecución 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, ejecute la
bundle list
, no lagem list
y debería 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. Más información sobre el error se puede encontrar here y here - Cuando cambio algo en la gema local, para poder cargarlo en la aplicación de rieles, debo
stop/start
el servidor de rieles Si estoy cambiando la
version
de la gema, alstopping/starting
el servidor Rails me da un error. Para solucionarlo, estoy especificando la versión de gema en la aplicación de rielesGemfile
esta manera:gem ''GEM_NAME'', ''0.0.2'', :github => ''GEM_NAME/GEM_NAME'', :branch => ''master''
Puede hacer referencia a gemas con source: source: ''https://source.com'', git repository (:github => ''git/url'')
y con ruta local :path => ''.../path/gem_name''
.
Puedes aprender más sobre Gemfiles y cómo usarlos en este artículo.
Si quieres la rama también:
gem ''foo'', path: "point/to/your/path", branch: "branch-name"
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 todos necesiten ejecutar estos dos pasos.