2011-04-27 27 views
12

我在github上分叉了spree repo,我想在我的rails應用程序的Gemfile中指定一個位於core子目錄中的gem主要存儲庫。如何在Gemfile中指定位於Git存儲庫的子目錄中的.gemspec

庫的文件夾結構如下:

|~spree     [git root] 
| |-spree.gemspec   [spree gem located here] 
|~core 
| |-spree_core.gemspec [spree_core gem located here] 

換句話說,我願做沿着這些路線的東西:

gem 'spree-core', :git => 'git://github.com/spree/spree.git' 

的問題是,我得到下面的錯誤消息時,我嘗試bundle install

找不到寶石 '熱潮芯(> = 0)' 在GIT中:/ /github.com/spree/spree.git(在主人)。 源不包含任何版本的「大禮包核(> = 0)」

回答

5

你可以做的就是創建一個只包含core子目錄和相關spree_core.gemspec文件回購。這也將導致更輕薄的安裝。您也可以搶目錄的內容與應用捆綁像這樣分配的:

gem 'spree-core', :path => 'vendor/gems/spree/core' 

出現的bundler從一個Git倉庫安裝的能力,根據the documentation有所限制它期待spree_core/spree_core.gemspec而不是core/spree_core.gemspec

寶石創作者的這種疏忽很常見,因爲大多數人不希望人們安裝除正式發佈的寶石以外的其他東西。至少很高興能夠找到.gemspec文件,因爲有些項目甚至不會讓很多人感到沮喪。

4

這首先出現在谷歌搜索上,給出的答案從來都不正確,或者Bundler改變了它的行爲。

在OP中有一個拼寫錯誤,錯誤似乎與原來的問題一致。特別是spree-core不應該被連字符。

以下應很好地工作:

gem 'spree_core', github: 'spree/spree' 
相關問題