2011-04-27 86 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' 
相关问题