O problema com Gemfile
e gemspec
surge quando você precisa extrair algo bruto como uma gema (por exemplo, um aplicativo Rails autônomo um dia se torna um mecanismo montável em Rails), você deve alterar seu fluxo de trabalho de gerenciamento de dependência normal. O bem antigo bundle install
não é mais suficiente.
Digamos que você tenha um projeto Gemfile
cheio de joias. O que você fará se precisar fazer referência a este projeto em outro projeto?
Em primeiro lugar, crie o project.gemspec
arquivo. Veja os documentos do Bundler .
bundle gem my_gem
Você deve referenciar seu gemspec
interior da Gemfile
seguinte forma:
source 'http://rubygems.org'
gemspec
Cada gem que você tinha no Gemfile
como uma dependência agora deve residir dentro do gemspec
arquivo assim:
Gem::Specification.new do |s|
...
s.add_dependency "how-cute-and-adorable", "= 0.3.2"
...
end
Verifique se o bundle install
comando instala todas as gemas necessárias antes de passar para a próxima etapa.
Cada joia precisa carregar automaticamente suas próprias dependências manualmente. Digamos que em seu lib
diretório você tenha project.rb
:
require 'project/stuff'
require 'project/more_stuff'
module Project
end
No, project.rb
você deve adicionar todas as gemas que possui nas dependências. Tenha especial cuidado se o nome da gema não corresponder ao que você realmente precisa :
require 'how-cute-and-adorable'
require 'cute'
require 'cute/and-adorable'
require 'project/stuff'
require 'project/more_stuff'
module Project
end