Respuestas:
Esta no es estrictamente una respuesta a su pregunta sobre la instalación de .gem
paquetes, pero puede especificar todo tipo de ubicaciones gema por gema editando su Gemfile .
:path
atributo instalará la gema desde esa ruta en su máquina local.gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
atributo 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 server
servidor 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 install
Despué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 package
Es 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 --all
si desea incluir gemas path
o git
dependencias. Sin embargo, le dará un recordatorio útil si detecta tales dependencias.
--local
documentos: "Tenga en cuenta que si existe una gema específica de plataforma apropiada en rubygems.org, no se encontrará".
Agregar .gem
a vendor/cache
parece funcionar. No se requieren opciones en Gemfile
.
Me resultó más fácil ejecutar mi propio servidor de gemas usando geminabox