Respostas:
Esta não é estritamente uma resposta à sua pergunta sobre a instalação de .gem
pacotes, mas você pode especificar todos os tipos de locais gem a gem editando seu Gemfile .
:path
atributo instalará a gema desse caminho na sua máquina local.gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
atributo instalará a gem a partir de um repositório 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 mencionou em seu comentário .)
gem "foreman", :git => "https://github.com/pje/foreman.git"
Parece que o empacotador não pode usar arquivos .gem imediatamente. Apontar o caminho: para um diretório que contém arquivos .gem não funciona. Algumas pessoas sugeriram configurar um servidor de gem local (geminabox, stickler) para esse fim.
No entanto, o que eu achei muito mais simples é usar um servidor "gem" local do sistema de arquivos: basta colocar seus arquivos .gem em um diretório local e, em seguida, usar "gem generate_index" para torná-lo um repositório Gem
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
Finalmente, aponte o bundler para esse local adicionando a seguinte linha ao seu Gemfile
source "file://path/to/repo"
Se você atualizar as gemas no repositório, certifique-se de gerar novamente o índice.
gem server
nem queria hospedar todo o projeto, apenas o arquivo .gem.
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
Por padrão, o Bundler verifica primeiro o seu sistema e, se não conseguir encontrar uma jóia, utilizará as fontes especificadas no seu Gemfile.
Você pode forçar o bundler a usar as gems implantadas usando "bundle package" e "bundle install --local"
Na sua máquina de desenvolvimento:
bundle install
(Instala gemas necessárias e cria Gemfile.lock)
bundle package
(Armazena em cache as gemas no fornecedor / cache)
No servidor:
bundle install --local
(--local significa "use as gemas do fornecedor / cache")
bundle install
Depois disso, copie o Gemfile ao fornecedor / cache , adicione a volta gem ao Gemfile e executar bundle install --local
bundle package
é uma ótima sugestão, mesmo agora, três anos depois. Se a sua versão do Bundler for anterior a 2.0 (ainda não lançada até o momento), você precisará usá- bundle package --all
lo se desejar incluir gemas com path
ou git
dependências. Ele fornecerá um lembrete útil se detectar tais dependências.
--local
documentação: "Observe que, se uma jóia específica da plataforma apropriada existir no rubygems.org, ela não será encontrada."
Adicionando .gem
a vendor/cache
parece trabalho. Nenhuma opção é necessária no Gemfile
.
Achei mais fácil executar meu próprio servidor gem usando geminabox
Veja estas instruções simples .