Respuestas:
Esta no es estrictamente una respuesta a su pregunta sobre la instalación de .gempaquetes, pero puede especificar todo tipo de ubicaciones gema por gema editando su Gemfile .
:pathatributo instalará la gema desde esa ruta en su máquina local.gem "foreman", path: "/Users/pje/my_foreman_fork"
:gitatributo se instalará la gema desde un repositorio de 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 mencionó en su comentario ).
gem "foreman", :git => "https://github.com/pje/foreman.git"
Parece que el paquete no puede usar archivos .gem listos para usar. Señalar la ruta: a un directorio que contiene archivos .gem no funciona. Algunas personas sugirieron configurar un servidor de gemas local (geminabox, stickler) para ese propósito.
Sin embargo, lo que encontré que es mucho más simple es usar un "servidor" de gemas 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 apunte 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.
gem serverservidor ni quería alojar todo el proyecto, solo el archivo .gem.
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
Por defecto, Bundler verificará su sistema primero y si no puede encontrar una gema, usará las fuentes especificadas en su Gemfile.
Puede forzar a bundler a usar las gemas que implemente usando "bundle package" y "bundle install --local"
En su máquina de desarrollo:
bundle install
(Instala las gemas necesarias y crea Gemfile.lock)
bundle package
(Almacena en caché las gemas en proveedor / caché)
En el servidor:
bundle install --local
(--local significa "usar las gemas del vendedor / caché")
bundle installDespués de eso, copie el archivo de gemas al proveedor / caché , agregue la gema de nuevo al archivo de gemas y ejecute bundle install --local
bundle packageEs una gran sugerencia, incluso ahora, tres años después. Si su versión de Bundler es anterior a la 2.0 (aún no publicada en este escrito), deberá usarla bundle package --allsi desea incluir gemas patho gitdependencias. Sin embargo, le dará un recordatorio útil si detecta tales dependencias.
--localdocumentos: "Tenga en cuenta que si existe una gema específica de plataforma apropiada en rubygems.org, no se encontrará".
Agregar .gema vendor/cacheparece funcionar. No se requieren opciones en Gemfile.
Me resultó más fácil ejecutar mi propio servidor de gemas usando geminabox