本地gem的'bundle install'不能解析依赖关系,而'gem install'可以解析依赖关系

时间:2012-07-18 00:11:50

标签: ruby-on-rails ruby rubygems bundler

我在目录'/ home / enterprise / pkg'中有一个本地gem(enterprise-0.0.1.gem)。 它依赖于active_directory gem(v 1.5.5),它在enterprise.gemspec文件中指定如下: -

gem.add_dependency("active_directory")

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

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

当我这样做时

  

捆绑安装

从我的应用程序的源目录中,只安装了企业gem。因此,我点击了运行时错误以引用active_directory gem。

但是当我做的时候

  

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

依赖关系得到解决,我可以在gem列表中看到active_directory gem。

为什么使用bundler的依赖项解析存在差异,而不是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         = ["example@example.com"]
      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

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,最后删除了Gemfile.lock来解决问题。

答案 1 :(得分:0)

您的gem是否有一个包含以下内容的Gemfile?

source 'https://rubygems.org'

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

尝试在您的应用程序gemspec中添加require

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

答案 2 :(得分:0)

gem.add_runtime_dependency中使用gemspec - 而不是add_dependency,无论是否将Gemfile添加到^/flashmediaelement.swf$,都需要宝石。