neo*_*sab 6 ruby rubygems ruby-on-rails bundler
我在目录'/ home/enterprise/pkg'中有一个本地gem(enterprise-0.0.1.gem).它依赖于active_directory gem(v 1.5.5),它在它的enterprise.gemspec文件中指定如下: -
gem.add_dependency("active_directory")
Run Code Online (Sandbox Code Playgroud)
在我的应用程序的Gemfile中,我添加以下行: -
gem 'enterprise', '0.0.1', path => '/home/enterprise/pkg'
Run Code Online (Sandbox Code Playgroud)
当我做
捆绑安装
从我的应用程序的源目录,只安装了企业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
Run Code Online (Sandbox Code Playgroud)
您的 gem 是否有包含以下内容的 Gemfile?
source 'https://rubygems.org'
# Specify your gem's dependencies in enterprise.gemspec
gemspec
Run Code Online (Sandbox Code Playgroud)
尝试在您的应用程序 gemspec 中添加 require
gem 'enterprise', '0.0.1', path => '/home/enterprise/pkg', :require => "active_directory"
Run Code Online (Sandbox Code Playgroud)