【问题标题】:can bundler install gems from a bare git repo?bundler 可以从裸 git repo 安装 gems 吗?
【发布时间】:2012-04-24 17:03:48
【问题描述】:

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

我的 gem 在根目录中有一个 gemname.gemspec,一切看起来都很好。

在使用 Gemfile 时:

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

好的,那么

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

一切似乎都很好,直到我列出了宝石并且“宝石名”不存在。 Require 也失败了。

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

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

再次,bundler 说没问题。

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

但同样,没有从应用程序中正确安装或引用它。

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

谢谢!

【问题讨论】:

    标签: ruby git gem bundler


    【解决方案1】:

    您需要先使用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>)
    

    【讨论】:

    • 哦,太好了,成功了!谢谢!哦!现在我明白了……哦!它就在 Bundler 页面上,但我已经习惯 Rails 为我做这些了……不用说这不是一个 Rails 应用程序,所以我必须手动完成。谢谢! (哦!)
    • 我也有很多这样的时刻 :) 例如,当我第一次在 Rails 应用程序之外使用 Time 类时,我花了很长时间弄清楚为什么 5.days.from.now 不起作用。 .
    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 2014-02-10
    • 2019-07-16
    • 1970-01-01
    • 2020-04-17
    • 2011-06-27
    • 1970-01-01
    • 2014-05-07
    相关资源
    最近更新 更多