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

本文分享了将项目从旧版本升级到Rails2.1的过程中遇到的问题及解决办法,包括如何通过freeze方式安装Rails,以及解决gem冻结过程中的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:项目刚刚升级到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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值