从分叉的git安装gem - 看起来好像已经安装好但是它不在gem列表中而且我不能要求它

时间:2011-10-22 13:06:26

标签: github gem bundle bundler

很抱歉,如果这是重复的,我已经看到了一些关于bundler和git的问题但是没有完全明白。

我在github上分叉了一个宝石 - 我的叉子是https://github.com/toastkid/contentapi-ruby

在我的Gemfile中,我更改了gem行以使用:git选项,指向我的新fork:

gem "guardian-content", :git => "git://github.com/toastkid/contentapi-ruby.git"

然后我做了

bundle update guardian-content,它说

Using guardian-content (0.2.2) from git://github.com/toastkid/contentapi-ruby.git (at master)

我认为这意味着我现在已经安装了宝石,但我不知道:它不在gem list,我不能在红宝石中使用宝石控制台。

我读到github不再进行gem托管了。我不是百分之百的实际意义(宝石托管而不是托管宝石的源代码?)。所以,我将我的叉子克隆到我的机器上,并在那里构建它。然后,我更改了Gemfile中的行以指向包含gemspec文件的本地文件夹:

gem "guardian-content", :path => './gems/contentapi-ruby'

然后我做了

bundle update guardian-content

再次,这次它说

Using guardian-content (0.2.2) from source at ./gems/contentapi-ruby

gem list中仍然没有监护人内容宝石,仍然无法满足要求。

有人能让我直截了当吗?如何在捆绑安装中使用我的分叉(理想)或本地构建(如果需要)gem?我将把它部署到我的服务器上,所以需要让它以可靠的方式运行。

谢谢,最大

1 个答案:

答案 0 :(得分:3)

在Bundler中使用来自git(或来自本地文件系统:带路径)的gems不会将它们安装到您的GEM_HOME中,因此它们不能以通常的方式提供给RubyGems,但它确实使它们可用于Bundler只要他们在Gemfile中。

如果要在irb中包含gem,请确保Gemfile和Gemfile.lock位于当前目录中并且(在irb中)执行此操作:

require `bundler/setup'
require 'guardian-content'

根据您的Ruby / RubyGems版本(以及您的$ RUBYOPT),您可能必须require 'rubygems'才能require 'bundler/setup'