我创建了一个gem(X),但它尚未发布。现在我正在创建另一个gem,它将添加gem X作为依赖项,如下所示:-
s.add_dependency "X"
在gemspec文件中。
由于gem(X)不在rubygem、git或rubyforge上,bundle install命令抛出错误:
找不到宝石X**
我认为指定X的路径会起作用,但怎么做呢?
我想我明白@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关于gemspec和Bundler 的博客文章
如果你发现你需要针对尚未发布的宝石进行开发(例如,Rails通常针对未发布的Rack、Arel或Mail宝石进行开发),你可以在宝石文件中添加单独的行,告诉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。这些信息纯粹是用于在开发过程中建立一个完整环境的信息,这需要一定的精度。
我想您可以在这里找到问题的答案:宝石依赖
希望它能有所帮助。