¿Cómo puedo especificar local.¿archivos de gemas en mi 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 tengo que especificar la ruta de origen?

Author: Benjamin Oakes, 2011-04-12

7 answers

Por defecto Bundler comprobará su sistema primero y si no puede encontrar una gema utilizará las fuentes especificadas en su Gemfile.

 26
Author: JHurrah,
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
2011-04-12 10:56:34

Esto no es estrictamente una respuesta a su pregunta sobre la instalación de paquetes .gem, pero puede especificar todo tipo de ubicaciones gema por gema editando su Gemfile.

Al especificar un atributo :path se instalará la gema desde esa ruta en su máquina local.

gem "foreman", :path => "/Users/pje/my_foreman_fork"

Alternativamente, al especificar un atributo :git se instalará la gema desde un repositorio git remoto.

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 @JHurrah mencionado en su comentario.)

 246
Author: pje,
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-05-23 12:18:00

Parece que Bundler no puede usar.archivos de gemas listos para usar. Apuntando la ruta: a un directorio que contiene .gem files no funciona. Algunas personas sugirieron configurar un servidor de gemas local (geminabox, stickler) para ese propósito.

Sin embargo, lo que me pareció mucho más simple es usar una gema local "servidor" del sistema de archivos: Solo pon tu .archivos de gema en un directorio local, luego use "gem generate_index" para convertirlo en un repositorio de gema

mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index

Finalmente punto bundler a esta ubicación mediante la adición de la siguiendo la línea a su Gemfile

source "file://path/to/repo"

Si actualiza las gemas en el repositorio, asegúrese de regenerar el índice.

 52
Author: Martin Thiede,
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
2012-09-12 14:56:01

Desempaquetaría su gema en la carpeta proveedor de la aplicación

gem unpack your.gem --target /path_to_app/vendor/gems/

Luego agregue la ruta en el Gemfile para vincular la gema desempaquetada.

gem 'your', '2.0.1', :path => 'vendor/gems/your'
 37
Author: edap,
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-03-03 10:45:37

Puedes forzar a bundler a usar las gemas que despliegues usando "bundle package"y" bundle install local local "

En su máquina de desarrollo:

bundle install

(Instala las gemas necesarias y crea el Gemfile.lock)

bundle package

(Almacena en caché las gemas en vendor / cache)

En el servidor:

bundle install --local

(local local significa "usar las gemas del proveedor/caché")

 4
Author: Henry Collingridge,
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
2011-06-02 10:15:46

Me pareció más fácil ejecutar mi propio servidor de gemas usando geminabox

Ver estas sencillas instrucciones.

 0
Author: Dave Sag,
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-07-30 06:27:45

Agregar .gem a vendor/cache parece funcionar. No se requieren opciones en Gemfile.

 0
Author: Victor Moroz,
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-08-17 17:17:27