缺少Railsgem

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

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

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

rails 2.3.4在我的gem列表中:

 *** 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上运行

另外,OF NOTE:脚本/控制台似乎在2.3.4下工作……但是应用程序仍然在Web浏览器中失败。

UPDATE

好的,所以我检查了httpd.confPassengerRuby指令,它是/usr/local/bin/rubywhich ruby生成了/usr/bin/ruby 。 我将指令更改为/usr/bin/ruby

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

缺少Rails 2.3.4gem。 请使用gem install -v=2.3.4 rails ,更新您已安装的Rails版本的config / environment.rb中的RAILS_GEM_VERSION设置,或注释掉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 activate’from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/ lib / ruby​​ / 1.8 / ruby​​gems.rb:68:来自/ usr / bin / rake的’gem’:18

Apache配置中的PassengerRuby指令是否与“哪个ruby”中的输出相匹配? 如果没有,那么您的乘客不会在同一个地方寻找gem

您可能安装了gem,但Passenger可能正在寻找其他位置。 可能GEM_HOME一件事是在配置中设置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