今天把程序从一个机器拿到另外一个机器上时,在执行rake db:migrate时,出现了以下问题:
Missing the Rails 2.0.2 gem. Please `gem install -v=2.0.2 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.
很显然是版本不兼容的问题。想起来前几天运行例子时,就出现过类似问题,但是当时提示版本是2.1.2,于是就按照提示升级了rails。这次又碰上了,那就用老办法解决,运行命令:
gem install -v=2.0.2 rails
更悲惨的结果出现了,给出了下面的提示信息:
/usr/bin/gem:10:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009.
/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)
gem不能运行了。于是Google一番,发现都是老外的信息,其中有人写到,运行如下命令:
apt-get remove ruby*
apt-get clean
apt-get instal ruby rubygems
可是在执行过上面的命令后,依然如故,gem命令仍然不能运行。
最后正解如下:
编辑/usr/bin/gem文件,在其中新增加一行:
require 'rubygems/gem_runner'
然后注释掉接下来的一行:
Gem.manage_gems --> #Gem.manage_gems
运行顺利通过。
于是重新运行
gem install -v=2.0.2 rails
程序顺利启动。
在最初的提示中有“注释掉RAILS_GEM_VERSION,从而使用最新版本的rails”,但是我在environment.rb中,加上注释后,并不能解决问题。原因可能是,rails不是通过gem安装,缺少了一些必要的依赖。