捆绑器可以从裸git仓库安装宝石吗?

时间:2012-04-24 17:03:49

标签: ruby git gem bundler

所以,阅读http://git-scm.com/book/en/v1/Git-on-the-Server-Public-Access,我正试图按照简单的http服务器上的指示设置一个裸仓库(没有git-daemon,我需要一个吗?)。

我的gem在root中有一个gemname.gemspec,似乎都很好。

使用Gemfile:

gem 'gemname', :git => 'http://path'

好的,那么

> bundle install
...
Installing blah...
Using gemname (1.0.0) from source at 'http://path'
...

一切似乎都很好,直到我列出宝石并且'gemname'不在那里。要求也失败。

那么,计划#2:因为我们将服务器镜像为路径,我想我将使用直接路径到没有git repo的gem:

gem 'gemname', :path => 'path/to_gemname'

再次,捆绑者说好了。

Using gemname (1.0.0) from source at 'path/to_gemname'

但同样,不会在应用程序中安装或正确引用它。

关于它应该如何工作的任何想法(即正确的目录布局等)或者我需要一个真正的git / gem服务器来做这个吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要先使用Bundler.setup

require "rubygems"
require "bundler/setup"

require "gemname"

# use gemname

您可能还会发现调用Bundler.require很有用。这将自动地要求Gemfile中的所有gem。无需为您使用的每个宝石调用require "gem name"

require "rubygems"
require "bundler/setup"

Bundler.require

# use any gem in Gemfile

另请参阅此类似答案,该答案提供了上述代码的更复杂版本:Bundler isn't loading gems

您可以通过在命令行窗口中键入bundle list来检查一切是否有效。您应该看到以下内容。

$ bundle list
Gems included by the bundle:
  * bundler (1.1.3)
  * some_dependency (0.0.1)
  * gemname (1.2.3 <git-sha-hash>)