Bundle安装无法在GitHub上安装我的gem fork

时间:2012-01-27 08:39:39

标签: rubygems github bundler

在GitHub上,我创建了一个gem adammck-rubygsm的分支。我的叉子在这里https://github.com/khwang1/rubygsm

我想将我的应用程序从原始切换到我的分叉gem。所以,在Gemfile中我更改了行

gem 'adammck-rubygsm'

gem 'adammck-rubygsm', :git => "git://github.com/khwang1/rubygsm.git"

当我运行“捆绑安装”时,我收到以下故障

$ bundle install
Updating git://github.com/khwang1/rubygsm.git
Fetching source index for http://rubygems.org/
Could not find gem 'adammck-rubygsm (>= 0)' in git://github.com/khwang1/rubygsm.git (at master).
Source does not contain any versions of 'adammck-rubygsm (>= 0)'

任何想法为什么?

3 个答案:

答案 0 :(得分:2)

必须使用https指定git指令,如:

gem 'resque', :require => "resque/server", git: 'https://github.com/defunkt/resque.git'

答案 1 :(得分:0)

感谢您的建议。我做了以下更改,以便从GitHub成功捆绑安装my fork of adammck-rubygsm

  • 在我的应用程序Gemfile中,更改为gem 'rubygsm', :git => "git://github.com/khwang1/rubygsm.git"。 Gem的.gemspec中的s.name一直是“rubygsm”。

然后,bundle install抱怨找不到gem'toholio-serialport'

  • 在我的fork gem的.gemspec中,删除行s.add_dependency("toholio-serialport", ["> 0.7.1"])。提交并将更改推送到GitHub。

捆绑安装抱怨rubygsm did not have a valid gemspec...The validation message from Rubygems was: ["bin/gsm-app-monitor"] are not files

  • 检查gem source cod,文件bin / gsm-app-monitor确实不存在。在我的fork gem的.gemspec文件中,从"bin/gsm-app-monitor"中删除s.files。提交并将更改推送到GitHub。

现在,bundle install成功地在GitHub上从我的fork gem安装了gem ruby​​gsm!

答案 2 :(得分:0)

你的fork的gemspec可能包含一个与RubyGems上的gem不同的名称,例如当我在GitHub上分叉active_merchant时,他们的.gemspec文件有:

s.name         = 'activemerchant'

但是gem在RubyGems上被定义为active_merchant所以我改变了我的Gemfile:

gem "active_merchant", git: "https://github.com/adamwaite/active_merchant.git", require: "active_merchant"

为:

gem "activemerchant", git: "https://github.com/adamwaite/active_merchant.git", require: "active_merchant"

注意缺少“_”。

之后一切都很完美。这可能是一个不起眼的案例,但我希望它可以帮助某人!