我们发布了 Ruby on Rails 2.3.6:六个月的 bug 修复、少量新功能,并且为 Rails 3 奠定了坚实的基础。
我们在 Rails 2.3.6 中弃用了一些不常用且陈旧的功能,以便在 Rails 3 中完全移除它们。如果您的应用程序在 Rails 2.3.6 上运行而没有出现弃用警告,那么您将顺利过渡。
这道慢炖佳肴由我们全志愿厨房的 87 位提交者 奉上。
现在,让我们打开好礼袋吧!
Action Pack
- 将 Rack 从 1.0.1 升级到 1.1.0。
- XSS 防护:更新以匹配 Rails 3,并迁移到官方插件 http://github.com/rails/rails_xss。
- Cookies:便捷的 cookie jar 插件,可以一次性设置永久 cookie、签名 cookie 或两者兼备:
cookies.permanent.signed[:remember_me] = current_user.id。 阅读更多。
- Flash:将 `alert` 和 `notice`(许多应用程序中最常见的 flash 键)提升到 `self.alert = '...'` 和 `self.notice = '...'`。添加 `redirect_to url, :alert => '...'` 和 `:notice => '...'`。 阅读更多。
- i18n:本地化 `label` 助手。
Active Record
- 命名空间:通过定义 `self.table_name_prefix` 支持模块上的可选表名前缀。 阅读更多。
- Destroy 使用乐观锁。
- 计数器缓存:使用
Post.reset_counters(1234, :comments) 来计算帖子 1234 的评论数并重置其 comments_count 缓存。
- PostgreSQL:如果支持,始终使用符合标准的字符串。
- MySQL:添加索引长度支持。 阅读更多。
- MySQL:`add_` 和 `change_column` 支持使用
:first => true 和 :after => :other_column 进行列定位。
Active Support
- 将 i18n 从 1.3.3 升级到 1.3.7。
- 将 TZInfo 从 0.3.12 升级到 0.3.16。
- 多字节:加速字符串验证和清理。
- JSON:如果可用,则使用 YAJL 进行 JSON 解码。
gem install yajl-ruby
- 测试:添加 `assert_blank` 和 `assert_present`。 阅读更多。
- 核心:从 Ruby 1.8.8 backport `Object#singleton_class`,弃用我们的 `Object#metaclass`。
- 核心:添加 `Object#presence`,如果对象
#present? 则返回该对象,否则返回 nil。示例:region = params[:state].presence || params[:country].presence || 'US'
- 核心:添加 `Enumerable#exclude?` 以匹配 `include?`。
- 核心:将 `Array#rand` 重命名为 `Array#random_element`,以避免与 `Kernel#rand` 冲突。
- 核心:将 `Date#` 和 `Time#last_(month|year)` 重命名为 `#prev_(month|year)`,以兼容 Ruby 1.9 及更高版本。
Active Resource
- JSON:将
ActiveResource::Base.include_root_in_json = true 设置为序列化为模型名称 → 属性的哈希,而不是裸属性哈希。默认为 false。
Action Mailer
- 将 TMail 从 1.2.3 升级到 1.2.7。
Railties
请参阅 提交日志 以获取完整信息。