缺少Rails宝石

时间:2011-01-13 20:17:46

标签: ruby-on-rails ruby gem passenger

我知道这个问题在本网站上被多次询问过,但在深入了解其他答案之后,我仍然对如何解决这个问题一无所知。

我刚刚从生产服务器上提取了rails应用程序的副本,我收到以下错误:

  

缺少Rails 2.3.4 gem。请   gem install -v=2.3.4 rails,更新   您的RAILS_GEM_VERSION设置   用于Rails的config / environment.rb   你安装的版本,或   注释掉要使用的RAILS_GEM_VERSION   已安装最新版本。

rails 2.3.4在我的宝石列表中:

*** LOCAL GEMS ***

actionmailer (2.3.8, 2.3.5, 2.3.4, 2.2.2, 1.3.6)
actionpack (2.3.8, 2.3.5, 2.3.4, 2.2.2, 1.13.6)
actionwebservice (1.2.6)
activerecord (2.3.8, 2.3.5, 2.3.4, 2.2.2, 1.15.6)
activeresource (2.3.8, 2.3.5, 2.3.4, 2.2.2)
activesupport (2.3.8, 2.3.5, 2.3.4, 2.2.2, 1.4.4)
acts_as_ferret (0.4.3)
authlogic (2.1.6)
capistrano (2.5.2)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
dnssd (0.6.0)
fastercsv (1.5.4)
fastthread (1.0.1)
fcgi (0.8.7)
ferret (0.11.6)
gem_plugin (0.2.3)
gemcutter (0.6.1)
google-spreadsheet-ruby (0.1.2)
highline (1.5.0)
hpricot (0.6.164)
libxml-ruby (1.1.2)
mongrel (1.1.5)
mysql (2.8.1)
needle (1.3.0)
net-scp (1.0.1)
net-sftp (2.0.1, 1.1.1)
net-ssh (2.0.4, 1.1.4)
net-ssh-gateway (1.0.0)
nokogiri (1.4.4)
oauth (0.4.4)
packet (0.1.15)
prawn (0.8.4)
prawn-core (0.8.4)
prawn-fast-png (0.2.3)
prawn-layout (0.8.4)
prawn-security (0.8.4)
rack (1.2.1, 1.1.0, 1.0.1)
rails (2.3.8, 2.3.5, 2.3.4, 2.2.2, 1.2.6)
rake (0.8.3)
RedCloth (4.1.1)
rmagick (2.13.1)
roo (1.9.3)
ruby-ole (1.2.11.1)
ruby-openid (2.1.2)
ruby-yadis (0.3.4)
rubynode (0.1.5)
rubyzip (0.9.4)
spreadsheet (0.6.5.0)
sqlite3-ruby (1.2.4)
termios (0.9.4)
xmpp4r (0.4)

gem list -d rails看起来像这样:

*** LOCAL GEMS ***

rails (2.3.8, 2.3.5, 2.3.4, 2.2.2, 1.2.6)
    Author: David Heinemeier Hansson
    Rubyforge: http://rubyforge.org/projects/rails
    Homepage: http://www.rubyonrails.org
    Installed at (2.3.8): /Library/Ruby/Gems/1.8
                 (2.3.5): /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
                 (2.3.4): /Library/Ruby/Gems/1.8
                 (2.2.2): /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
                 (1.2.6): /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

    Web-application framework with template engine, control-flow layer,
    and ORM.

现在,这里是我丢失的地方:在environment.rb我有这条线来选择rails 2.3.4。

RAILS_GEM_VERSION = '2.3.4' unless defined? RAILS_GEM_VERSION

如果我将此行更改为:

RAILS_GEM_VERSION = '2.3.8' unless defined? RAILS_GEM_VERSION

错误消失了。我知道有不同位置安装的rails版本,但有两个版本安装在同一位置。为什么2.3.8不会引发错误,而2.3.4呢?

如何解决此问题?

注意:我正在使用Passenger

另外,注意:脚本/控制台似乎在2.3.4下工作...但应用程序仍然在网络浏览器中失败。

更新

好的,所以我检查了PassengerRuby中的httpd.conf指令,/usr/local/bin/ruby生成which ruby /usr/bin/ruby。我将指令更改为/usr/bin/ruby

这解决了Web浏览器问题,但现在脚本/控制台失败并出现同样的错误:

  

缺少Rails 2.3.4 gem。请   gem install -v=2.3.4 rails,更新   您的RAILS_GEM_VERSION设置   用于Rails的config / environment.rb   你安装的版本,或   注释掉要使用的RAILS_GEM_VERSION   已安装最新版本。

现在,我可以在Web浏览器中查看该项目。但我无法使用任何rails脚本,rake db:migrate失败并出现以下错误:

  

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:827:in   report_activate_error': Could not find RubyGem rake (>= 0) (Gem::LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:261:in 激活'来自   /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:68:in来自/ usr / bin / rake的'gem':18​​

2 个答案:

答案 0 :(得分:2)

Apache配置中的PassengerRuby指令是否与您获得的输出相匹配"哪个ruby"?如果没有,那么您的乘客不会在您所在的同一地点寻找宝石

答案 1 :(得分:0)

您可能安装了宝石,但Passenger可能正在寻找其他位置。可能有用的一件事是在配置中设置GEM_HOME环境变量。

在Apache中,这看起来像:

SetEnv GEM_HOME /Library/Ruby/Gems/1.8

您可能会发现2.3.4由于某种原因不在该目录中,例如它是一个不包含任何文件的安装失败。

通过查看确保正确加载2.3.4:

% ls -l /Library/Ruby/Gems/1.8/gems/rails-2.3.4