2012-07-18 6 views
6

Ho una gemma locale (enterprise-0.0.1.gem) in una directory '/ home/enterprise/pkg'. Ha dipendenza gemma active_directory (v 1.5.5), che è stato specificato nel suo file di enterprise.gemspec in questo modo: -'bundle install' per una gem locale non risolve le dipendenze, mentre 'gem install' fa

gem.add_dependency("active_directory") 

In Gemfile della mia applicazione, ho aggiungere la seguente riga: -

gem 'enterprise', '0.0.1', path => '/home/enterprise/pkg' 

Quando faccio

bundle install

dalla directory sorgente della mia applicazione, solo l'enterprise gem è installato. Quindi, ho colpito errori di runtime per il riferimento a gemella active_directory.

Ma quando faccio

gem install /home/enterprise/pkg/enterprise-0.0.1.gem

le dipendenze sono risolte e posso vedere la gemma active_directory nella gemma elenco.

Perché c'è una discrepanza nella risoluzione delle dipendenze con il bundler e non con i rubygems.

Gentilmente fammi sapere se ho bisogno di fornire ulteriori informazioni sull'ambiente. Ruby: 1.9.2, RubyGems: 1.8.24, Bundler: 1.1.5, rvm: 1.9.2.

Il mio file enterprise.gemspec di riferimento: -

# -*- encoding: utf-8 -*- 
    require File.expand_path('../lib/enterprise/version', __FILE__) 

    Gem::Specification.new do |gem| 
     gem.authors  = ["example"] 
     gem.email   = ["[email protected]"] 
     gem.description = %q{Enterprise Gem: example} 
     gem.summary  = %q{Services: Authentication, Access Control} 
     gem.homepage  = "http://example.com" 
     gem.files   = %w[ 
         README.md 
         Rakefile 
         Gemfile 
         Gemfile.lock 
         enterprise.gemspec 
         lib/enterprise.rb 
         lib/enterprise/auth_service.rb 
         lib/enterprise/version.rb 
         ] 
    gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) } 
    gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) 
    gem.name   = "enterprise" 
    gem.require_paths = ["lib"] 
    gem.version  = Enterprise::VERSION 
    gem.add_dependency("active_directory") 
    end 

risposta

0

Il vostro gioiello, ha un Gemfile con il seguente contenuto?

source 'https://rubygems.org' 

# Specify your gem's dependencies in enterprise.gemspec 
gemspec 

provare ad aggiungere un richiedono nell'applicazione gemspec

gem 'enterprise', '0.0.1', path => '/home/enterprise/pkg', :require => "active_directory" 
+0

Sì, ce l'ho nel Gemfile della gemma aziendale. Hai bisogno del mio file gemspec? – neosab

+0

No, non sembra installare la gemella active_directory con l'opzione: require. Si comporta allo stesso modo di prima. Solo l'enterprise gem è installato. – neosab

+0

Sono curioso di sapere qual è la pratica standard per l'utilizzo di una gemma locale personalizzata. Fare una [gem install "enterprise" e bundle install] ogni volta che sposto la mia applicazione su un server di produzione non ha senso. – neosab

2

ho avuto lo stesso problema e ha finito per l'eliminazione del Gemfile.lock per risolvere il problema.

+0

Rimuovere la voce Gemfile.lock per la mia gem locale ha risolto anche il problema delle dipendenze. – Samuel

0

Uso gem.add_runtime_dependency nel vostro gemspec - non add_dependency e che dovrebbe richiedere la gemma se lo si aggiunge al vostro Gemfile o meno.

+0

Apparentemente, sono alias l'uno per l'altro (SO risposta: https://stackoverflow.com/a/24334371/1042144, Ruby docs: http://ruby-doc.org/stdlib/libdoc/rubygems/rdoc/Gem/ Specification.html # metodo-i-add_runtime_dependency) –