我知道这个问题已在此网站上多次被问到,但在深入研究其他答案后,我仍然对如何解决这个问题一无所知。
我刚刚从生产服务器中提取了 Rails 应用程序的副本,但出现以下错误:
Missing the Rails 2.3.4 gem. Please
gem install -v=2.3.4 rails
, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
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 -drails
看起来像这样:
*** 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' 除非定义? RAILS_GEM_VERSION
如果我将此行更改为:
RAILS_GEM_VERSION = '2.3.8' 除非定义? RAILS_GEM_VERSION
错误消失。我知道有不同版本的 Rails 安装在不同的位置,但有问题的两个版本安装在同一位置。为什么 2.3.8 不会报错,而 2.3.4 却报错?
如何解决这个问题?
注意:我正在 Passenger 上运行
另外,请注意:脚本/控制台似乎可以在 2.3.4 下运行...但该应用程序在网络浏览器中仍然失败。
更新
好的,所以我检查了 httpd.conf
中的 PassengerRuby
指令,它是 /usr/local/bin/ruby
而 哪个 ruby
生成了 /usr/bin/ruby
。我将指令更改为 /usr/bin/ruby
。
这解决了网络浏览器问题,但是现在脚本/控制台失败并出现相同的错误:
Missing the Rails 2.3.4 gem. Please
gem install -v=2.3.4 rails
, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
现在,我可以在网络浏览器中正常查看该项目了。但我无法使用任何 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/rubygems.rb:68:in `gem' from /usr/bin/rake:18
最佳答案
您可能已经安装了 gem,但 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
关于ruby-on-rails - 失踪的 rails gem ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684797/