ruby - traduccion - ¿Cómo especifico los archivos.gem locales en mi Gemfile?
bundler ruby (6)
De manera predeterminada, Bundler verificará primero su sistema y, si no puede encontrar una gema, usará las fuentes especificadas en su Gemfile.
Tengo un par de archivos gem que instalo a través de gem install xx.gem
. ¿Puedo decirle a Bundler que los use? ¿O debo especificar la ruta de origen?
Descomprimiría su gema en la carpeta del proveedor de la aplicación
gem unpack your.gem --target /path_to_app/vendor/gems/
A continuación, agregue la ruta en el Gemfile para vincular la gema desempacada.
gem ''your'', ''2.0.1'', :path => ''vendor/gems/your''
Esto no es estrictamente una respuesta a su pregunta sobre la instalación de paquetes .gem
, pero puede especificar todo tipo de ubicaciones en una base de gema por gema editando su Gemfile .
Especificando un atributo de :path
instalará la gema de esa ruta en su máquina local.
gem "foreman", :path => "/Users/pje/my_foreman_fork"
Alternativamente, la especificación de un atributo :git
instalará la gema desde un repositorio remoto de git.
gem "foreman", :git => "git://github.com/pje/foreman.git"
# ...or at a specific SHA-1 ref
gem "foreman", :git => "git://github.com/pje/foreman.git", :ref => "bf648a070c"
# ...or branch
gem "foreman", :git => "git://github.com/pje/foreman.git", :branch => "jruby"
# ...or tag
gem "foreman", :git => "git://github.com/pje/foreman.git", :tag => "v0.45.0"
(Como mencionó en su comentario ).
Me resultó más fácil ejecutar mi propio servidor de gemas usando geminabox
Parece que el paquete no puede usar archivos .gem de fábrica. Apuntando a: la ruta a un directorio que contiene archivos .gem no funciona. Algunas personas sugirieron configurar un servidor de gemas local (geminabox, stickler) para ese fin.
Sin embargo, lo que encontré mucho más simple es usar un "servidor" gema local del sistema de archivos: simplemente coloque sus archivos .gem en un directorio local, luego use "gem generate_index" para convertirlo en un repositorio de gemas.
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
Finalmente, señale el paquete a esta ubicación agregando la siguiente línea a su Gemfile
source "file://path/to/repo"
Si actualiza las gemas en el repositorio, asegúrese de regenerar el índice.
Puedes forzar a bundler a usar las gemas que implementas usando "paquete paquete" y "paquete de instalación --local"
En tu máquina de desarrollo:
bundle install
(Instala gemas requeridas y hace Gemfile.lock)
bundle package
(Guarda en caché las gemas en el proveedor / caché)
En el servidor:
bundle install --local
(--local significa "usar las gemas del proveedor / caché")