原来的系统用的是rails 3.0.4, 出于对提高js开发效率的考虑, 想升级rails 3.1.0以上版本, 不过由于原系统插件绑定的太深了,许多功能都不能适应到rails 3.1的升级, 最后放弃对rails 3.1的升级, 但事实上rails 3.1确实有一些新的特性功能, 值得一用.
一些对rails 3.1兼容的插件问题:
rails 3.0.4使用可以使用mysql2(0.2.6), 但rails 3.1更新了activeRecord的一些方法, 需要使用 mysql2 新版本(0.3.x)来支持.
最佳方式是升级mysql到5.5, 但代价会很大.
param[:id] 是rails通过get/post传过来的参数, rails 3.0.4自动解析成integer, 而rails 3.1.1则解析成string
因此在controller的代码上需要做一些转型. 如: id = param[:id].to_i, 而不是id = param[:id]
rails 3.1+的will_paginate仍然不能使用git上的master版本. (当前的版本是3.0.2), 而要使用:
"gem 'will_paginate', '~> 3.0.pre2'"
rails 3.0.4中的用 form_for(@user) 生成html时, 对于 submit()的helper, 会生成 <input type="submit" id="user_submit" ... />
rails 3.1.1中则是: <input type="submit" id="submit" />
所以特别是使用了cucumber及Capybara时, 则需要修改场景中所有与submit的id相关的代码, 不然会出错不通过.
- attr_cleaner插件不支持rails 3.1.1
之前用attr_cleaner来自动strip一此param参数, 不过attr_cleaner标明只支持acitiveRecord3.0的.
所以必须放弃此插件. attr_cleaner较简单, 可以自己写一个model的filter的.
rails 3.1.0有assets的概念, 而rails 3.0.4没有这个概念, 所有的资源文件都放在public路径下, 所以使用assets, 将会让你对静态资源, 如css, js, image的存储策略作适当的调整, 这个需要花一定的时间去理解整个assets的概念, 并调整原系统.
如rspec升级到最新版本(2.7), devise可升级到最新版本, sunspot没有受到影响, i18n没有变化.
还有其他问题, 因为最后放弃升级系统, 没有往下研究.
如果原系统绑定太多的插件, 则会影响到rails的升级. 必须权衡rails新功能与系统的直接关系, 做出选择, 并放弃一些插件的使用.
不过rails 3.1还是有一些吸引人的东西,之前总是争论到底js文件要不要按插到页面中, 后台代码要如何融合到js中, 以及不同页面的js要用什么的策略去分开调用等,
assets和coffeeScript比较好的解决这个问题.
可以参考这个PPT, 简短介绍了rails 3.1 吸引人的地方:
InfoQ也有人作了很好的分析:
作者Mirko
Stocker译者李永伦发布于
2011年9月19日
前段时间,Ruby on Rails组发布了最受欢迎的Ruby Web框架的3.1版本,时间几乎是上一个主要版本Rails
3.0发布一年之后。这个版本包含了以下重要特性:
- Assets Pipeline
- 流
- 可逆迁移
- 把jQuery作为默认的JavaScript库
Assets Pipeline是Rails的主要更新,有个完整的指南讲述了如何使用它以及它能做什么:
Assets Pipeline提供一个框架串联并缩减或压缩JavaScript和CSS。它还允许通过其它语言编写它们,比如说,CoffeeScript、Sass和ERB。
Assets Pipeline也是David Heinemeier Hansson在RailsConf上的演讲内容。
流是指Rails现在支持HTTP流了,也被称作块状传输编码。流的优点是Web服务器可以在它完全计算完毕之前开始传输。Rails组在他们的博客上解释了流的好处:
流没有减少延迟,也没有减少生成动态响应所需的时间。但因为应用程序立刻发送内容,而不是等到整个响应渲染出来,所以客户端可以尽早请求内容。特别地,如果你刷新HTML文档头,将会以并行的方式获取CSS和JavaScript文件,与此同时,服务器会处理内容的生成。结果是页面加载更快了。
有个Railscast解释了如何为Rails应用程序设置流。
Rails已经支持向下迁移一段时间了,那么,为什么说可逆迁移是新的?到目前为止,你都不得不自己写向下迁移,但Rails 3.1现在可以帮你完成这部分工作。Rohit Arondekar解释其中的奥妙:
基本上,如果你在你的迁移里定义一个change方法(而不是之前的up和down方法),然后应用迁移,那么命令会照常执行。不过,在逆向迁移的时候,命令会被记录,然后生成一组反向命令并运行之。反向命令只是简单地把原来命令反过来执行。
这些只是Rails 3.1的一部分改变,发布说明里面还有很多等着你去发现。举个例子,强制SSL的配置选项现在支持了。要知道你的插件能否在3.1下工作,请查看railsplugins.org。
你打算升级你的应用程序吗?Austin Hughey在他发表到The H上的文章给出了一些建议。
InfoQ中文链接 :http://www.infoq.com/cn/news/2011/09/rails-31
查看英文原文:Ruby on Rails 3.1 Released, Brings Assets Pipeline, Streaming, and Javascript Changes
分享到:
相关推荐
这是最新的Rails 3.1 实战,包括TDD、BDD等实用技术。
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
标题 "rails3.1安装与mysql配置 windows" 涉及到的是在Windows操作系统上安装Ruby on Rails 3.1框架并配置MySQL数据库的过程。这是一个关键的开发环境设置步骤,对于使用Rails进行Web开发的程序员来说至关重要。Ruby...
《敏捷Web开发与Rails》第四版是一本不可多得的好书,它不仅提供了Rails框架的全面介绍,还深入解析了MVC模式,介绍了Rails 3.1版本的新特性,并且强调了敏捷开发的重要性。对于希望进入Web开发领域的初学者来说,这...
tiny_mce, Ruby on Rails 插件( pre Rails 3.1 ),允许你轻松地将TinyMCE编辑器实现到你的应用程序中 用于 Rails的 TinyMCE因为我没有时间维护它,而且代码库处于不一致状态,所以这个 gem 被折旧 ! 似乎如下笔记。...
backbone-rails, 在 Rails 3.1中轻松使用 backbone.js 主干 rails 轻松设置并使用 Rails 3.1和更高版本的backbone.js ( 1.2.2 )##Version#####Github 主 branch###gem 版本:1.2.2Backbone 版本:1.
在Rails 3.1版本中,引入了许多重要更新和改进,使得这个框架更加高效且功能丰富。 首先,让我们深入了解Rails 3.1在资产管道(Asset Pipeline)方面的重要变革。资产管道是一种整合和优化应用程序中CSS、...
但是,当将CoffeeScript添加到Rails 3.1中时,他们忘记了一个非常重要的部分,即在响应JavaScript(JS)请求时可以使用它的功能! 在Rails 3.1中,使用CoffeeScript构建应用程序JavaScript非常容易,但是,如果向...
jqgrid-jquery-rails 由Doc Walker认可提供为Rails 3.1+资产管道打包的jqGrid jQuery插件。安装将这些行添加到应用程序的Gemfile : # jqgrid jquery plugin packaged for the rails asset pipelinegem 'jqgrid-...
2. **Rails 3.1新特性**: - **Asset Pipeline**:Rails 3.1引入了Asset Pipeline,将CSS、JavaScript、图片等静态资源管理整合到一个统一的流程中,提高了页面加载速度。 - **CoffeeScript**:默认使用...
提供为 Rails 3.1+ 资产管道打包的qTip2 jQuery 插件。 安装 将这些行添加到应用程序的Gemfile : # qtip2 jquery plugin packaged for the rails asset pipeline gem 'qtip2-jquery-rails' , '~> 2.2.100' 然后...
脚本以用于 Rails 3.1+ 和 Rails 4 资产管道。 安装 将jquery_file_download-rails添加到应用程序的Gemfile : gem 'jquery_file_download-rails' 运行 Bundler 来锁定 gem: bundle install 在jquery和jquery...
该项目允许您在 Rails 3.1 应用程序中轻松使用 iPhone 样式的复选框。 安装 将gem 'ios-checkboxes'添加到 Gemfile 并运行bundle install 与 Rails 3.1 一起使用 将//=require ios-checkboxes添加到您的app/assets/...
**Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...
铁轨这个 gem 只包含作为 Rails 3.1(或更高版本)资产管道中的资产。 gem 中的当前版本是 TipTip 1.3安装将 gem 添加到 Gemfile gem "tiptip-rails", "~> 1.0.0"用法在您的 JavaScript 清单中(例如application.js ...
为 Rails 3.1+ 资产管道提供 GitHub Flavored Markdown CSS。 安装 将这些行添加到应用程序的Gemfile : # github flavored markdown css packaged for the rails asset pipeline gem 'github-css-rails' , '~> ...
利用并充分利用Rails 3.1资产管道的好处Jasminerice消除了您没有测试CoffeeScript文件无法控制的泛滥的借口。 该项目动摇并使用了MIT-LICENSE。 发展须知 布拉德·费兰(Brad Phelan)不再积极开发该项目,但正在...
桌布栏杆 Doc Walker 宝石化提供为 Rails 3.1+ 资产管道打包的Tablecloth JavaScript/CSS。安装将这些行添加到应用程序的Gemfile : # tablecloth table js/css packaged for the rails asset pipelinegem '...
此gem打包了Rails 3.1+资产管道的 。 Eonasdan的tarruda的的分支得到了积极维护,并与。 是必需的依赖项。 安装 将这些行添加到应用程序的Gemfile中: gem 'momentjs-rails' , '>= 2.9.0' gem 'bootstrap3-...