【问题标题】:Installing a gem from Github with Bundler使用 Bundler 从 Github 安装 gem
【发布时间】:2011-04-20 07:09:49
【问题描述】:

我正在尝试使用 instructions here 安装带有捆绑程序的 gem 的预发布版本。

“bundle install”输出将 gem 列为正在安装,但“gem list”找不到它。

我的宝石文件:

source :gemcutter

gem 'sinatra', '1.1.0', :git => 'http://github.com/sinatra/sinatra.git'
gem 'RedCloth', '4.2.3'

这是一个gist 以及我的示例代码的其余部分。

有没有人让这个场景工作?

注意:我也在使用 RVM(在 OS X 上)。 bundle show 确实将 gem(和依赖项)列为现有,但我无法正确解决它们。

谢谢。

【问题讨论】:

  • rackup 的输出是什么?

标签: ruby rubygems sinatra bundler


【解决方案1】:

Bundler 可能已将其本地安装到您的应用中。这可能会有很大差异,具体取决于操作系统以及您是否使用 RVM。

bundle show sinatra 的输出是什么?

就我而言,sinatra 安装在此处:

/home/marshall/.rvm/gems/ruby-1.8.7-p302@3846859/bundler/gems/sinatra-9cfa74a7f352

Sinatra 没有显示在 gems 列表中,但是如果我执行 rackup,服务器会正​​确启动。

【讨论】:

  • 捆绑展示:捆绑中包含的宝石:* RedCloth (4.2.3) * bundler (1.0.1) * rack (1.2.1) * sinatra (1.1.0 9cfa74a) *tilt (1.1 )
  • 之前应该提到过,我使用的是 RVM 和 OS X。所以我猜 gem 在那里,require 没有正确解决。
【解决方案2】:

使用 Shotgun 和 Bundler(仅限 git 存储库)似乎存在问题。

如果我使用 rackup 启动我的应用程序,一切都很好。我将进行更多调查,然后为其中一个(或两个)项目提交错误。

【讨论】:

    【解决方案3】:

    我会查看加载路径,并从那里进一步调试,例如:

    ...(master) $ irb
    irb(main):001:0> $LOAD_PATH.count
    => 8
    irb(main):004:0> require 'bundler/setup'
    => true
    irb(main):005:0> $LOAD_PATH.count
    => 112
    irb(main):006:0> 
    

    Bundler 为您配置加载路径,这意味着默认情况下并非所有 gem 都包含在您的加载路径中。

    另外,来自bundler git help

    因为 Rubygems 缺乏处理来自 git 的 gem 的能力,所以从 git 存储库安装的任何 gem 都不会显示在 gem 列表中。但是,它们将在运行 Bundler.setup.

    后可用。

    最好的问候,希望这会有所帮助

    ED

    【讨论】:

      【解决方案4】:

      通过 Engine Yard 上的捆绑程序安装的 Gem 转到不同的文件夹以隔离它们。

      通常是/data/APP_NAME/shared/bundled_gems

      请务必检查您在 Engine Yard 的 APP 文件夹中的 .bundle/config 文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-02
        • 1970-01-01
        • 2016-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多