我创建了一个 gem(X) 但它没有发布。现在我正在创建另一个 gem,它将添加 gem X 作为依赖项,如下所示:-
s.add_dependency "X"
在 gemspec 文件中。
由于 gem(X) 不在 rubygem 或 git 或 rubyforge 上,因此捆绑安装命令会抛出错误:
找不到宝石 X**
我认为指定 X 的路径就可以解决问题,但是如何呢?
我想我明白了 @bor1s 在关于 git 引用的 SO 帖子中所指的内容。
The gemspec
文件是关于发布 gem 的依赖项。你的Gemfile
设置本地开发环境,通常通过调用gemspec
.
在你的情况下你的gemspec
应该有这个
s.add_dependency "X"
然后你的Gemfile
看起来像这样(确保本地引用位于gemspec
call):
source "http://www.rubygems.org"
gemspec
gem "X", :path => "/Users/vikram/source/X"
引自 Yahuda Katz 的关于 gemspec 和 Bundler 的博客文章 http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
如果您发现需要针对尚未发布的 gem 进行开发(例如,Rails 经常针对未发布的 Rack、Arel 或 Mail gem 进行开发),您可以在 Gemfile 中添加单独的行,告诉捆绑器在哪里可以找到宝石。它仍然会使用 .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。这些信息纯粹是开发时用来搭建完整环境的东西,需要一定的精度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)