Rails2.1 升级历险 [持续更新中~~]

阅读更多
注意:项目刚刚升级到rails2.1,问题持续发现中~~~~~~

如果直接用gem,没什么好说的,直接gem install
但是,我选择的安装方式是:freeze,理由如下:
1 我机器上有多个rails项目,我只想让其中的一个升级到rails2.1,不想影响其他的项目。
2 我的团队成员他们都没有装rails2.1,直接gem install是很慢很慢地。

所谓的freeze,就是讲rails某个版本拷贝到项目下的vendor目录。以保证外部的rails gems不会影响到本项目。

好,开始。

首先,rake rails:freeze:gems

控制台出错:

uninitialized constant Gem::GemRunner

哦,google一下,发现rubyforum上有讨论,但最后不了了之。

自己hack喽。

加上--trace参数

uninitialized constant Gem::GemRunner
D:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:2237:in `const_missing'
D:/ruby/lib/ruby/gems/1.8/gems/rails-2.0.0/lib/tasks/framework.rake:26
D:/ruby/lib/ruby/gems/1.8/gems/rails-2.0.0/lib/tasks/framework.rake:25:in `each'
D:/ruby/lib/ruby/gems/1.8/gems/rails-2.0.0/lib/tasks/framework.rake:25


于是定位到framework.rake,在require 'rubygems'(line 6)后面 加入:
require 'rubygems/gem_runner'
搞定!

接着运行 rake rails:freeze:gems

又出现另外一个问题:
Freezing to the gems for Rails 2.1.0
Unpacked gem: 'D:/dev/one/vendor/rails/activesupport-2.1.0'
Unpacked gem: 'D:/dev/one/vendor/rails/activerecord-2.1.0'
Unpacked gem: 'D:/dev/one/vendor/rails/actionpack-2.1.0'
Unpacked gem: 'D:/dev/one/vendor/rails/actionmailer-2.1.0'
Unpacked gem: 'D:/dev/one/vendor/rails/activeresource-2.1.0'
Unpacked gem: 'D:/dev/one/vendor/rails/rails-2.1.0'
rake aborted!
Permission denied - rails-2.1.0 or railties
D:/ruby/lib/ruby/1.8/fileutils.rb:505:in `rename'


先不管,运行 script/server再说
说找不到railties这个目录。
晕倒
直接把 vendor/rails/rails-2.1.0修改为 railties

一切OK了。
总结下来:
1 在framework.rake添加  require 'rubygems/gem_runner'
2 将目录rails-2.1.0修改为 railties


你可能感兴趣的:(Rails,Ruby,Git,rubygems,ActiveRecord)