Me gustaría que Bundler cargue una gema local. ¿Hay una opción para eso? ¿O tengo que mover la carpeta gem al directorio .bundle?¿Cómo puedo especificar una gema local en mi Gemfile?
Respuesta
Creo que se puede hacer esto:
gem "foo", :path => "/path/to/foo"
Además de especificar la ruta de acceso (como Jimmy mencionado) también se puede forzar Bündler usar una joya local para su entorno sólo se utilizando la siguiente configuración opción:
$ bundle config local.GEM_NAME /path/to/local/git/repository
Esto es extremadamente útil si está desarrollando dos gemas o una joya y un rieles de lado a lado de aplicación.
Nota sin embargo, que esto sólo funciona cuando ya se está utilizando 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
según lo visto en the docs.
Tengo problemas con esto porque estoy usando 'BUNDLE_PATH' (compilando un paquete para su distribución). Al hacer lo que sugirió, o la respuesta de Jimmy, solo hace un 'uso', y no lo instala en mi carpeta' BUNDLE_PATH'. No pude resolver esto, ¿alguna ayuda? – Automatico
Tenga en cuenta que esto no funcionará con ** gemspec **, por discusión [aquí] (https://github.com/bundler/bundler/issues/2911). – dukedave
Para deshabilitar la anulación local: 'bundle config --delete local.GEM_NAME' – alxndr
También puede hacer referencia a una gema local con git si está trabajando en ello.
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 todo el mundo necesita para hacer funcionar estos dos pasos.
esto es genial, pero no es tan conveniente si estás desarrollando activamente la gema ... porque necesitarás comprometer cada cambio & ' paquete de desinstalación
Para utilizar repositorio joya local en un proyecto de rieles, siga los siguientes pasos:
Comprobar si la carpeta joya es un repositorio git (el comando se ejecuta en la carpeta joya)
git rev-parse --is-inside-work-tree
Obtener ruta del repositorio (el comando se ejecuta en la carpeta joya)
git rev-parse --show-toplevel
La creación de una anulación local para la aplicación rieles
bundle config local.GEM_NAME /path/to/local/git/repository
donde
GEM_NAME
es el nombre de su joya y/path/to/local/git/repository
es el resultado del comando en el punto2
En su aplicación
Gemfile
añadir la siguiente línea :gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Correr
bundle install
debe 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 su joya y/path/to/local/git/repository
desde el punto2
Por último, ejecute
bundle list
, nogem list
y debería ver algo como esto:GEM_NAME (0.0.1 5a68b88)
donde
GEM_NAME
es el nombre de su gema
Unos pocos 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
RubyMine
no está mostrando joyas locales como una biblioteca externa. Más información sobre el error se puede encontrar here y here - Cuando voy a cambiar algo en la joya local, con el fin de ser cargado en la aplicación de los carriles que debería
stop/start
el servidor rieles Si estoy cambiando el
version
de la gema,stopping/starting
el servidor Rails me da un error. Con el fin de solucionarlo, yo estoy especificando la versión joya en la aplicación rielesGemfile
así:gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Si desea que la rama demasiado:
gem 'foo', path: "point/to/your/path", branch: "branch-name"
puede hacer referencia a las gemas con la fuente : source: 'https://source.com', git repository (:github => 'git/url')
y con la ruta local :path => '.../path/gem_name'
.
Puede obtener más información sobre Gemfiles and how to use them en este artículo.
- 1. Especificar un plugin como gema de GitHub en Gemfile
- 2. ¿Debo especificar las versiones exactas en mi Gemfile?
- 3. ¿Puedo forzar las dependencias de una gema en gemfile?
- 4. ¿Cómo referir una gema local en rubí?
- 5. ¿Cómo puedo especificar una gema para extraer de un repositorio github privado?
- 6. ¿Puedes tener múltiples versiones de una gema en un Gemfile?
- 7. Cómo usar una gema en Rails 3 sin hacer referencia a ella en el Gemfile
- 8. ¿Cómo puedo hacer dependencias gemspec carga automática en una aplicación Rails 3, utilizando un Gemfile
- 9. ¿Cómo puedo usar la regla "gemspec" en Bundler, mientras sigo usando el pago local de una gema?
- 10. Cómo saber el Archivo de la gema para utilizar una copia local específico de una gema
- 11. Falta la gema mysql2. Añadirlo a su Gemfile: joya 'mysql2'
- 12. condicionales en Gemfile
- 13. ¿Mejor práctica, agregar una versión a cada gema en el gemfile?
- 14. cómo añadir una gema en el paquete
- 15. ¿Cómo puedo especificar un archivo jar local como una dependencia en Play! 1.x marco
- 16. ¿Cómo puedo avanzar mi rama local en 1 compromiso?
- 17. Errores extraños al instalar mi gema
- 18. ¿Cómo puedo eliminar mi sucursal local en GIT?
- 19. puedo especificar mi tipo explícita en línea comparador?
- 20. ¿Cómo obtener un "commit" específico de una gema de github?
- 21. ¿Cómo puedo leer un archivo de texto en mi disco local en una variable en javascript
- 22. Al usar 'gemspec' en un Gemfile, ¿cómo puedo hacer lo siguiente? Require => 'foo'
- 23. ¿Cómo puedo instalar una joya local?
- 24. ¿Cómo puedo encontrar mi host local y mi nombre de usuario en mysql?
- 25. ¿Cómo se puede configurar Bundler/Gemfile para usar diferentes fuentes de gemas durante el desarrollo?
- 26. variable local indefinida o método `acts_as_taggable 'en gema
- 27. Cómo modificar una gema Ruby
- 28. ¿Cómo puedo eliminar mi última confirmación en mi repositorio local de git
- 29. ¿Cómo cargo una gema de la fuente?
- 30. ¿cómo publico mi proyecto asp.net en mi iis local?
Un camino codificado está bien para una sesión de hack rápida, pero la solución de gema local de bloudermilk es más efectiva para proyectos bajo control de versión. Te permite seguir revisando los dos proyectos (gema y proyecto usando la gema) para que otros no tengan que verificar la fuente de la gema o compartir los mismos caminos. – mahemoff
Puede hacer esto ligeramente más limpio usando un enlace simbólico .gignorado a su gema local en el directorio del proyecto: de esta forma puede usar el control de fuente en ambos proyectos por separado y otros pueden hacer lo mismo sin tener una estructura de directorio idéntica. – Dan
Algo a lo que tener cuidado podría ser Spring. Si está utilizando una ruta local para su gema, podría notar versiones en caché de su gema local como lo hice en la consola de rieles. Si no parece que se están recogiendo los cambios de gemas locales, intente 'spring stop' para ver si realmente es el problema. –