`
dazuiba
  • 浏览: 129648 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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


分享到:
评论
8 楼 zhu1230 2009-07-18  
RAILS版本的升级确实很让人头疼,插件太多
7 楼 jinleileiking 2009-07-17  
<div class="quote_title">花花公子 写道</div>
<div class="quote_div">我觉得github上面直接下载某一分支的压缩包的服务挺好的,我就是直接下的rails2.1的tgz包直接解压缩到vendor/rails。</div>
<p>感觉 rails:freeze:gems 就是将系统的rails拷贝到vendor</p>
6 楼 jinleileiking 2009-07-17  
啊。最近刚遇到一个问题,就是lz所说的,要是早找到多好!
5 楼 rainchen 2008-08-07  
git 没有海龟壳的话在Windows中很不方便,各大IDE集成了对git支持没?
4 楼 dazuiba 2008-08-07  
<div class='quote_title'>花花公子 写道</div>
<div class='quote_div'>我觉得github上面直接下载某一分支的压缩包的服务挺好的,我就是直接下的rails2.1的tgz包直接解压缩到vendor/rails。</div>
<p>git的出现,确实方便了很多开发者。但是从另外一个角度:gem都是集中存放在rubyforge而不是github上。所以rubyforge依然会成为发布gem的不二之选。</p>
<p> </p>
<p>Gem install 的<code>--source选项就像一个鸡肋</code></p>
<p> </p>
<p>http://judofyr.net/posts/dont-forget-about-rubyforge.html</p>
3 楼 rainux 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 安装。
2 楼 花花公子 2008-08-06  
我觉得github上面直接下载某一分支的压缩包的服务挺好的,我就是直接下的rails2.1的tgz包直接解压缩到vendor/rails。
1 楼 dazuiba 2008-08-06  
<p>又有一个问题:will_paginate在has_many中,无法使用</p>
<pre name='code' class='ruby'>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</pre>
 
<p>原因是,rails2.1重构了AssociationProxy模块,将 HasManyThroughAssociation修改为AssociationCollection的子类。</p>
<p>而按照will_paginate在enable_activerecord中的做发,它将HasManyThroughAssociation hack了两遍。所以会出现这个问题。</p>
<p>解决办法:</p>
<p> </p>
<p> plugin/update不管用,因为rubyforge上很多插件都转到git上了,所以你需要从github上下载最新的版本,</p>
<p> </p>
<p>连接:http://github.com/mislav/will_paginate/tree/master</p>

相关推荐

    What’s New In Rails 2.1

    仅仅六个月之后,即2008年6月1日,Rails再次更新至2.1版本,进一步巩固了其在Web开发领域的领先地位。 根据David的介绍,Rails 2.1版本的主要新特性包括: - **时区支持**:Rails 2.1加强了对不同时间区域的支持,...

    RAILS2.1的中文版资料

    ### RAILS2.1的中文版资料:新特性与改进详解 #### 概述 《RAILS2.1的中文版资料》是一份针对Ruby on Rails 2.1版本的详细介绍文档,由Carlos Brando和Marcos Tapajós共同编写,并由中国Rails社区成员翻译成中文...

    ruby on rails 2.1新特性介绍

    - **基于UTC的迁移**:在Rails 2.1中,所有的数据库迁移默认使用协调世界时(UTC)进行时间戳标记,这有助于避免因时区不同导致的数据一致性问题。 #### ActionPack和ActionController改进 - **增强缓存机制**:...

    ruby on rails 2.1 what is new (CN)

    ### Ruby on Rails 2.1 新特性详解 #### 引言 自2004年David Heinemeier Hansson从其项目...这些更新不仅提升了开发效率,还增强了应用的功能性和稳定性,对于正在使用Rails进行开发的团队来说是非常值得升级的。

    rails2.1與Oracle 連結所需gem

    标题“rails2.1与Oracle连接所需gem”指的是在Rails 2.1版本的应用程序中,如何配置和使用Oracle数据库的宝石(gem)扩展。Rails是Ruby on Rails框架的简称,是一个流行的开源Web应用程序框架,而Oracle则是一种企业...

    rails 2.1 CHM api文档

    rails 2.1的api文档,chm格式,官方最新版

    rail 2.1 chm

    Rails 2.1是其历史版本中的一个重要里程碑,引入了许多新特性与改进,对于理解现代Web开发有着重要的参考价值。 1. **ActiveRecord**:Rails的核心组件之一,负责数据持久化。在Rails 2.1中,ActiveRecord增强了...

    Agile Web Development With Rails 3rdEdition

    特别值得注意的是,在许多章节中,截图尚未更新以匹配Rails 2.1产生的结果。 Rails核心团队仍在持续改进Rails 2。不时地,新版本可能会引入与先前版本的Rails不兼容的问题。为了试验这些变化,Rails开发者通过Edge ...

    Agile Web Development with Rails 3nd Edition Beta

    特别需要注意的是,在许多章节中,屏幕截图尚未更新以匹配 Rails 2.1 的结果。 #### Rails 的持续发展 Rails 核心团队仍在对 Rails 2 进行开发。随着时间推移,新版本可能会引入与之前版本不兼容的应用程序。为了...

    Rails相关电子书汇总

    此压缩包中的"rubyonrails21-cn.pdf"可能是《Ruby on Rails 2.1中文版》这本书的电子版,这本书详细介绍了Rails 2.1版本的特性、使用方法以及开发流程。 Rails框架的核心概念包括: 1. **ActiveRecord**:这是...

    自动化生成支持cucumber,Rspec的Rails(持续更新中)

    标题 "自动化生成支持cucumber,Rspec的Rails(持续更新中)" 暗示了这个压缩包文件的内容可能涉及使用Cucumber和RSpec这两种自动化测试工具在Ruby on Rails框架下的集成和配置。Cucumber是一种行为驱动开发(BDD)的...

    agile web development with rails 3 edition

    - 许多章节中的截图尚未更新以匹配Rails 2.1产生的结果。 - **版本控制**: - Rails核心团队持续对Rails 2进行维护和升级。新的发布可能会引入与之前版本不兼容的变化。 - 为了便于开发者实验这些变化,团队提供...

    使用Aptana+Rails开发Rails Web应用(中文)

    安装过程中,遵循提示进行,确保选择自定义安装并勾选Rails相关的插件,以便在Aptana中获得对Rails的全面支持。 安装完成后,打开Aptana Studio,创建一个新的Rails项目。在“File”菜单中选择“New”然后点击...

    Agile Web Development with Rails 3nd Edition Beta.pdf

    值得注意的是,尽管许多章节的内容已经更新,但其中的一些截图尚未同步更新到Rails 2.1所呈现的结果。 Rails核心团队仍在持续改进Rails 2。随着时间推移,新发布的版本可能会引入与先前版本不兼容的变更。为了探索...

    Subsonic2.1版 类似Rails的开源.NET项目

    2. **ActiveRecord模式**:Subsonic采用了类似于Rails中的ActiveRecord设计模式,每个数据库表对应一个.NET类,类中的方法可以直接操作数据库,如创建、读取、更新和删除(CRUD)记录。 3. **模板引擎**:Subsonic...

    Ruby on Rails中文指南

    在Ruby on Rails中文指南中,你将全面学习到如何利用这个强大的框架来构建动态的、数据驱动的Web应用程序。 首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图...

    rails指南 中文版

    1. **ActiveRecord**:这是Rails框架中的ORM(Object-Relational Mapping)组件,它负责处理数据库操作。通过ActiveRecord,开发者可以使用面向对象的方式来操作数据,而无需编写SQL语句。 2. **ActionController**...

    Advanced Rails

    8. **Rails更新与升级**:随着Rails版本的更新,新的特性和改进不断引入。理解如何从旧版本平滑升级到新版本,保持应用的兼容性和稳定性。 9. **Rails最佳实践**:了解并遵循Rails社区的最佳实践,如代码风格、设计...

Global site tag (gtag.js) - Google Analytics