2012-07-18 87 views
6

我在目錄'/ home/enterprise/pkg'中有一個本地gem(enterprise-0.0.1.gem)。 它有active_directory寶石(V 1.5.5),這是在其指定的依賴是enterprise.gemspec文件是這樣的: -本地gem的'bundle install'不能解決依賴關係,而'gem install'卻有

gem.add_dependency("active_directory") 

在我的應用程序的Gemfile中,我添加以下行: -

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

當我做

捆綁安裝

從我的應用程序的源目錄中,只安裝了企業級gem。因此,我遇到了運行時錯誤,以引用active_directory gem。

但是當我做

創業板安裝/home/enterprise/pkg/enterprise-0.0.1.gem

的依賴性都解決了,我可以看到active_directory寶石寶石名單。

爲什麼在使用捆綁器解析依賴關係時存在差異,而不是使用rubygems。

請讓我知道我是否需要提供有關環境的更多信息。 Ruby:1.9.2, RubyGems:1.8.24, Bundler:1.1.5, rvm:1.9.2。參考

我enterprise.gemspec文件: -

# -*- 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 

回答

0

貴的寶石,有一個Gemfile中包含以下內容?

source 'https://rubygems.org' 

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

嘗試增加在您的應用程序需要gemspec

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

是的,我在我的企業gem的Gemfile中有這些。 你需要我的gemspec文件嗎? – neosab 2012-07-18 23:44:10

+0

不,它似乎沒有安裝帶有:require選項的active_directory gem。它的行爲與以前一樣。只安裝企業級的寶石。 – neosab 2012-07-19 22:55:07

+0

我只是好奇什麼是使用自定義本地寶石的標準做法。每次將應用程序移動到生產服務器時執行[gem install'enterprise'&bundle install]都沒有意義。 – neosab 2012-07-19 22:58:01

2

我有同樣的問題,並最終刪除Gemfile.lock的解決這個問題。

+0

刪除我的本地gem的Gemfile.lock條目也爲我解決了依賴關係問題。 – Samuel 2015-04-01 08:01:58

0

使用gem.add_runtime_dependencygemspec - 不add_dependency這樣應該就需要你是否將它添加到您的Gemfile與否的寶石。

+0

顯然,它們是彼此的別名(所以答案:https://stackoverflow.com/a/24334371/1042144,Ruby文檔:http://ruby-doc.org/stdlib/libdoc/rubygems/rdoc/Gem/ Specification.html#方法-I-add_runtime_dependency) – 2017-08-09 15:07:48