我有一个本地的 gem (enterprise-0.0.1.gem),存放在目录 '/home/enterprise/pkg' 中。它依赖于 active_directory gem (v 1.5.5),并且在其 enterprise.gemspec 文件中像这样指定了:
gem.add_dependency("active_directory")
在我的应用程序的Gemfile中,我添加了以下行:-
gem 'enterprise', '0.0.1', path => '/home/enterprise/pkg'
当我在应用程序源目录中执行“bundle install”时,只安装了enterprise 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