使用Bundler从Github安装gem

时间:2010-10-02 17:46:30

标签: ruby rubygems sinatra bundler

我正在尝试使用instructions here使用bundler安装预发布版本的gem。

“bundle install”输出将gem列为已安装,但“gem list”无法找到它。

我的Gemfile:

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(和依赖项)列为现有的,但我无法正确解析它们。

感谢。

4 个答案:

答案 0 :(得分:23)

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

...(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处理gems的能力,因此从git存储库安装的任何gem都不会显示在 gem list 中。但是,在运行 Bundler.setup。

之后,它们将可用   

致以最诚挚的问候,希望这有帮助

ED

答案 1 :(得分:2)

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

bundle show sinatra的输出是什么?

就我而言,sinatra安装在这里:

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

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

答案 2 :(得分:0)

看起来使用Shotgun和Bundler存在问题(仅限git存储库)。

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

答案 3 :(得分:0)

通过Engine Yard上的bundler安装的Gems转到另一个文件夹以隔离它们。

通常是/data/APP_NAME/shared/bundled_gems

要确定,请检查Engine Yard上APP文件夹中的.bundle/config文件