2011-09-15 45 views
10

如果有兩個寶石,ABA1.0.0取決於B1.0.0我可以在gemfile中強制創建一個gem的依賴關係嗎?

在我的Gemfile:

gem 'A', '~> 1.0.0' 

然後運行bundle。它會生成一個Gemfile.lock的,如:

A (1.0.0) 
    B (1.0.0) 

但是,如果我想強制A使用B1.0.1,什麼是最好的做法是什麼?此外,如果B1.0.1不是發佈,而是一個github標籤?

回答

12

您需要明確指定Gemfile中的B gem以使用git存儲庫或其他版本。只要A 1.0.0與B 1.0.1兼容,你就可以。如果它僅與B 1.0.0兼容,那麼您將不得不創建自己的A gem分支,並將gemspec升級爲與B 1.0.1兼容,然後將該存儲庫用作A的寶石,而不是rubygems版。

這裏是一個示例Gemfile,它應該給你你想要的,只要A 1.0.0與B 1.0.1兼容。

gem 'B', :git => 'git://github.com/B/B.git', :tag => '1.0.1' 
gem 'A', '~> 1.0.0' 
相關問題