乘客:“缺少这些必需的宝石redgreen”

时间:2010-05-19 06:10:08

标签: ruby-on-rails ruby macos rubygems passenger

总ruby新手,尝试在Mac OS X Snow leopard上设置Rails / MongoDB应用程序。

已安装的Ruby 1.9.1和RubyGems 1.3.7,which rubywhich gem指向同一目录。我正在使用Snow Leopard内置的apache和Passenger 2.2.11。我正在使用mongo-site中的rails模板,这似乎总体上可行。

乘客给我的确切错误是:

/Users/User/Sites/feuerapp/vendor/rails/railties/lib/rails/gem_dependency.rb:119:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010. Use #requirement **Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance. You can install the extension as follows: gem install bson_ext If you continue to receive this message after installing, make sure that the bson_ext gem is in your load path and that the bson_ext and mongo gems are of the same version. Missing these required gems: redgreen You're running: ruby 1.9.1.376 at /usr/local/bin/ruby rubygems 1.3.7 at /Users/User/.gem/ruby/1.9.1, /usr/local/lib/ruby/gems/1.9.1 Run rake gems:安装to install the missing gems.

奇怪的是安装了redgreen并且对我来说很好看:

Dahlia:feuerapp User$ ls -la vendor/gems/
total 0
drwxr-xr-x 7 User staff 238 May 18 22:56 .
drwxr-xr-x 5 User staff 170 May 18 23:00 ..
drwxr-xr-x 11 User staff 374 May 18 22:56 factory_girl-1.2.4
drwxr-xr-x 11 User staff 374 May 18 22:56 mocha-0.9.8
drwxr-xr-x 7 User staff 238 May 18 22:56 mongo_mapper-0.7.6
drwxr-xr-x 7 User staff 238 May 18 22:56 redgreen-1.2.2
drwxr-xr-x 11 User staff 374 May 18 22:56 shoulda-2.10.3

在环境中评论这一行.rb“解决”了这个问题,但那并不是我想要的:

config.gem 'redgreen'

我对宝石一无所知,但从我有限的理解,redgreen应该在那里找到?

2 个答案:

答案 0 :(得分:3)

好的,发现它,我错过了测试单元的宝石。

我是怎么找到的?我去了vendor / gems / redgreen-1.2.2 / lib / redgreen.rb并查看了“require”语句,其中列出了“test / unit”。快速谷歌搜索引导我到测试单元宝石,并在gem install test-unit后它现在工作。

我不确定我是否能以某种方式告诉rake存在依赖关系并且我对有没有更好的错误消息感到有点失望,但至少现在已经解决了。

答案 1 :(得分:0)

也许它并没有告诉你,无论出于何种原因,它正在寻找不同版本的宝石。如果你运行(sudo)rake gems:安装并再试一次,你会收到相同的消息吗?至少可以说,宝石依赖企业在屁股上有点痛苦。

另外,特别是对于这种情况,我会说删除redgreen不是世界末日。由于它特定于测试,您还可以将gem依赖项移动到environment / test.rb(或任何其他测试环境),而不必在开发/分段/生产中处理它。

任何依赖于测试的宝石都只应针对您的测试环境而不是整个应用程序进行指定。