我创建了一个gem(X)并且没有发布。现在我正在创建另一个gem,它会将gem X添加为依赖关系,如下所示: -
s.add_dependency "X"
在gemspec文件中。
因为gem(X)不在rubygem或git或rubyforge上,所以bundle install命令会抛出错误:
无法找到宝石X **
我认为指定X的路径会起作用,但是如何?
答案 0 :(得分:14)
我想我看到了@ bor1s在SO帖子中指出的关于git引用的内容。
gemspec
文件是关于发布gem的依赖项。您的Gemfile
通常会致电gemspec
来设置您当地的开发环境。
在您的情况下,gemspec
应该有此
s.add_dependency "X"
然后您的Gemfile
看起来像这样(确保本地参考位于gemspec
电话之后):
source "http://www.rubygems.org"
gemspec
gem "X", :path => "/Users/vikram/source/X"
引自Yahuda Katz的blog post about gemspec and Bundler
如果您发现需要针对尚未发布的gem进行开发(例如,Rails通常针对未发布的Rack,Arel或Mail gem开发),您可以在Gemfile中添加单独的行来告诉bundler哪里可以找到宝石。它仍然会使用.gemspec中列出的依赖项来进行依赖项解析,但现在它确切知道在gem开发过程中找到依赖项的位置。
source "http://www.rubygems.org"
gemspec
# if the .gemspec in this git repo doesn't match the version required by this
# gem's .gemspec, bundler will print an error
gem "rack", :git => "git://github.com/rack/rack.git"
您不希望将此信息包含在.gemspec中,该内容最终将在开发中的gem发布后发布到Rubygems。同样,这使得整个系统更具弹性,因为它不依赖于瞬态外部URL。这些信息纯粹是用于在开发过程中建立完整环境的东西,这需要一定的精确度。
答案 1 :(得分:0)
我想你可以在这里找到你的问题的答案: Gem dependency
希望它会有所帮助。