浏览 3510 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-06
如果直接用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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-08-06
又有一个问题:will_paginate在has_many中,无法使用 SystemStackError: stack level too deep from D:/dev/one/vendor/plugins/will_paginate/lib/will_paginate/finder.rb:86:in `method_missing_without_paginate' from D:/dev/one/vendor/plugins/will_paginate/lib/will_paginate/finder.rb:87:in `method_missing' from (irb):1 原因是,rails2.1重构了AssociationProxy模块,将 HasManyThroughAssociation修改为AssociationCollection的子类。 而按照will_paginate在enable_activerecord中的做发,它将HasManyThroughAssociation hack了两遍。所以会出现这个问题。 解决办法:
plugin/update不管用,因为rubyforge上很多插件都转到git上了,所以你需要从github上下载最新的版本,
连接:http://github.com/mislav/will_paginate/tree/master |
|
返回顶楼 | |
发表时间:2008-08-06
我觉得github上面直接下载某一分支的压缩包的服务挺好的,我就是直接下的rails2.1的tgz包直接解压缩到vendor/rails。
|
|
返回顶楼 | |
发表时间:2008-08-06
dazuiba 写道 又有一个问题:will_paginate在has_many中,无法使用 SystemStackError: stack level too deep from D:/dev/one/vendor/plugins/will_paginate/lib/will_paginate/finder.rb:86:in `method_missing_without_paginate' from D:/dev/one/vendor/plugins/will_paginate/lib/will_paginate/finder.rb:87:in `method_missing' from (irb):1 原因是,rails2.1重构了AssociationProxy模块,将 HasManyThroughAssociation修改为AssociationCollection的子类。 而按照will_paginate在enable_activerecord中的做发,它将HasManyThroughAssociation hack了两遍。所以会出现这个问题。 解决办法: plugin/update不管用,因为rubyforge上很多插件都转到git上了,所以你需要从github上下载最新的版本, 连接:http://github.com/mislav/will_paginate/tree/master will_paginate 的最新版本推荐用 gem 安装。 |
|
返回顶楼 | |
发表时间:2008-08-07
花花公子 写道
我觉得github上面直接下载某一分支的压缩包的服务挺好的,我就是直接下的rails2.1的tgz包直接解压缩到vendor/rails。
git的出现,确实方便了很多开发者。但是从另外一个角度:gem都是集中存放在rubyforge而不是github上。所以rubyforge依然会成为发布gem的不二之选。
Gem install 的
http://judofyr.net/posts/dont-forget-about-rubyforge.html |
|
返回顶楼 | |
发表时间:2008-08-07
git 没有海龟壳的话在Windows中很不方便,各大IDE集成了对git支持没?
|
|
返回顶楼 | |
发表时间:2009-07-17
啊。最近刚遇到一个问题,就是lz所说的,要是早找到多好!
|
|
返回顶楼 | |
发表时间:2009-07-17
花花公子 写道
我觉得github上面直接下载某一分支的压缩包的服务挺好的,我就是直接下的rails2.1的tgz包直接解压缩到vendor/rails。
感觉 rails:freeze:gems 就是将系统的rails拷贝到vendor |
|
返回顶楼 | |
发表时间:2009-07-18
RAILS版本的升级确实很让人头疼,插件太多
|
|
返回顶楼 | |