traduccion ruby rubygems bundler

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 ).



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é")