关于rails2的项目升级到rails3的有关问题

关于rails2的项目升级到rails3的问题
   今天在公司接到个新的需求,要求是将现有的rails2.3.8的项目升级到rails3.0.3,因为在rails这方面还是个菜鸟,觉得这个升级几乎是不可能的,因为rails3与rails2比,几乎是把代码翻了个遍的大改了一通,所以很是头疼,没办法,只能google了,果真,搜到了一个rails的插件Rails Upgrade,在网上看了下,并没有仔细的研究。
   这里有个链接,是关于怎样安装这个插件的。
http://edgeguides.rubyonrails.org/3_0_release_notes.html#upgrade-process
然后是这个插件的使用方法:
https://github.com/rails/rails_upgrade/blob/master/README
    还有javaeye的一篇文章
http://www.iteye.com/topic/626273
里面讲得还算详细,贴出来供大家参考。

   在命令行输入 rake -T rails:upgrade,这会给你列出你在使用该插件的时候可能用到的命令,并给了你简单的解释:
   rake rails:upgrade:check  在命令行运行这个命令的时候你会发现,rails会为你检查当前的rails2项目各个文件,并跟rails3进行对比,并给你列出一个列表来,告诉你,哪些文件由于哪些原因,现在已经不推荐用了。这个命令一般是在你要进行rails项目升级前,进行文件检测用的,提醒那些文件将要修改,那些文件使用了旧的api之类的。
   rake rails:upgrade:backup 在命令行输入这个命令的时候你会发现,rails会给你列出一个文件分析表,并为你把这些文件进行备份,一般是备份到当前文件相同的目录下,并以rails2为后缀,然后再由rails3的生成器(generator)来生成这些文件,来把以前的文件覆盖。This is a list of the files analyzed and backed up (if they existed);you will probably not want the generator to replace them sinceyou probably modified them (but now they're safe if you accidentally do!)
   rake rails:upgrade:configuration ,这个rake输出config/application.rb文件的内容,但是不太靠谱,基本上就是把原来environment.rb文件中,但是这个命令并不会为你把这些内容写到这个config/application.rb文件中,甚至连这个文件都不会给你创建,这个命令只会为你生成出要添加到这个文件内容,所以我们要手动的创建这个文件,并把这些内容添加到这个文档中去。注意如果你在这里有config.gem 的配置,在新的config/application.rb文件中要删除掉,会报错的。其次,仔细观察会发现,这个命令为我们你生成的application.rb文件的内容还缺少了点东西:require 'rails/all'  还有:Bundler.require(:default, Rails.env) if defined?(Bundler),所以说,这个命令还是很不靠谱的。
    rake rails:upgrade:gems ,这个命令会输出Gemfile文件的内容,但是要你手动去新建一个Gemfile文件,放在项目的要目录下。
    rake rails:upgrade:routes,输出新的routes.rb的内容,还是要手动地把这些内容复制到routes.rb中
     到此为止,这个升级插件的工作算是完成了,但是如果我们通过对升级后的项目和最初用rails3生成的项目相比,发现,升级后的项目还是缺了很多东西,例如:
  1、缺少了 config.ru文件,这个时候要从我们手动创建的rails3项目中把这个文件拷贝过来,然后在进行相应的配置。
  2、通过对比发现,在手动创建的rails3项目的config/initializers里面没有new_rails_defaults.rb这个文件,但是在升级后的项目里面是有这个文件的,所以,我们要把升级后的项目中的这个文件删除,因为你不删除的话,rails是无法启动的。
  3、.必须修改 boot.rb 文件(新建一个rails 3的项目,把新生成的复制过去,否则rake会一直报错),同样是要修改application名的,请看第1点。
  4、把升级后的项目中的scripts目录删掉,然后从新建的rails3项目中把这个文件夹拷贝过来。
  5、修改environments目录下的三个文件,这三个文件要这样修改
     Myapp::Application.configure do 
     #     # 原来的代码 
     end
     经过以上的一番折腾,升级后的项目估计就能跑起来了。