大家好!
自 RailsConf 以来已过去 3 个月了,因此我认为是时候发布 Rails 3.1.0 了。现在正式发布!我已发布 Rails 3.1.0!
如需了解更具吸引力且易于阅读的变更列表,请查看 Rails 指南网站上的精彩 Rails 3.1.0 发行说明。如需了解不那么有吸引力的变更列表,请继续阅读!
以下是 Rails 3.1.0 中主要变更的一些亮点
ActionPack 已更新,包含新的资产管道。请参阅 资产管道上的 rails 指南。
已新增流式响应支持。此功能允许在处理实际完成之前流式传输模板给用户。有关更多信息,请参阅 Rails 指南或 ActionController::Metal::Streaming
中的文档。中间件已重构以支持此功能。
RJS 已提取到 gem 中。
attr_accessible
及其关联项现在接受 :as 作为指定角色的选项
添加了 ActiveModel::SecurePassword
以封装使用 BCrypt 加密和加盐的简单密码用法。
已集成预编译语句缓存。 ActiveRecord::Base#create
和简单查找程序将使用预编译语句和缓存,以实现更高性能的插入和选择。
已对关联关系进行了重构,以实现更高的简单性和可维护性。
default_scope
可以获取任何响应 call
的对象。
PostgreSQL 适配器仅支持 PostgreSQL 8.2 及更高版本。
迁移使用实例方法,而不是类方法。并非定义 self.up
方法,而是应定义实例方法 up
。
迁移是可逆的。在生成新的迁移时,迁移将包含一个称为 change
的方法。此方法中进行的数据库更改将自动知道如何还原自身。有关更多信息,请参阅 ActiveRecord::Migration
和 ActiveRecord::Migration::CommandRecorder
的文档。
在生成模型时,默认情况下会为 belongs_to
或 references
列添加 add_index
。
self.format = :xml
将在所有请求中将默认格式更改为JSON。如果你想继续使用XML,需要在类中设置。ActiveSupport::BufferedLogger将日志编码设置为BINARY,但仍然使用文本模式输出可移植的新行。
添加Object#in?以测试对象是否包含在另一个对象中。
ActiveSupport::Dependencies::ClassCache类已引入用于保存可重新加载类的参考。
向Date/DateTime/Time中添加weeks_ago
和prev_week
。
JSON解码现在使用multi_json
gem,它还提供了一个名为OkJson的json引擎。yaml后端已被弃用,OkJson成为1.8.x的默认引擎,而1.9.x内置json实现将被默认使用。
默认的数据库模式文件被写成UTF-8。
只有在存在x_sendfile_header
时才使用Rack::Sendfile中间件。
为Rails runner添加别名r
。
jQuery是新的默认JavaScript库。
添加config.force_ssl
配置,它加载支持HTTPS协议中所有请求的Rack::SSL中间件。
要查看更改的更详细列表,请参阅提交到Github上Rails存储库的每个CHANGELOG文件。
要查看更改的更详细列表,请参阅rails3.0.10和3.1.0之间的提交列表。
我个人对这个版本感到非常自豪。我要感谢testing our release candidates的人,提交补丁并发送错误报告的人。我认为Rails 3.1.0是至今为止最好的版本的Rails,如果没有你,我们不可能做到这一点。
请继续使用这个框架创造更惊人的东西!
<3 <3 <3