我们带来了礼物!Rails 4.2 最终版,刚好赶上圣诞节。它包含了精彩的玩具、实用的玩意儿和打磨过的细节,这都归功于一群了不起的快乐小精灵,他们几个月以来都兴高采烈地编码。
这可能是 Rails 有史以来经过最充分测试的新主版本发布。通过四个 Beta 版和三个候选发布版,有无数人帮助确保回归和 Bug 都被发现。自第一个 Beta 版以来,我们进行了 1600 多次提交,进行了精修打磨。所以你绝对有理由感到兴奋!
总而言之,以下是主要新功能的概述:
Rails 4.2 的重头戏是全新的 Active Job 框架及其集成。Active Job 是一个适配器层,建立在 Resque、Delayed Job、Sidekiq 以及更多排队系统之上。你可以编写自己的 Active Job,它们无需任何更改即可在所有这些队列上运行。
通过一个始终配置好的队列(尽管默认只是一个内联运行器),我们可以在合理的情况下在此基础上进行扩展。而第一个合理的应用就是异步发送 Action Mailer 邮件。因此,我们引入了 #deliver_later 方法,它将执行此操作:将你的电子邮件添加到队列中进行发送,这样你就不会拖慢控制器或模型。 voilà!
锦上添花的是我们新的 GlobalID 库。它通过通用形式序列化 Active Record 对象,可以轻松地将它们传递给作业。这意味着你不再需要通过传递 ID 来手动打包和解包 Active Record。只需将直接的 AR 对象提供给作业,它就会使用 GlobalID 进行序列化,并在运行时进行反序列化。轻松多了!
特别感谢 Cristian Bica 和 Abdelkader Boudih,他们为将这三项重大改进引入 Rails 付出了杰出的努力!
Aaron Patterson 始终在为 Rails 寻找性能方面的突破,通过一个名为 Adequate Record 的 Active Record 改进项目,他取得了成功。在 Rails 4.2 中,许多常见查询的速度提高了至少一倍!这是性能上的一个巨大飞跃。虽然计算机不断变得便宜,性能也在不断提高,但没有人说过“嘿,从我的框架中获取免费的速度”。所以,享受这份免费的速度吧,朋友!
在精彩的 Google Summer of Code for Rails 项目中,诞生了 Web Console,它为你提供了一个开发控制台,可以检查所有异常页面上的运行状态!你甚至可以跳转到堆栈跟踪中的不同点,并可以在该点进行检查。
这对调试工作流程来说是一个绝佳的改进。感谢 Genadi Samokovarov 和 Ryan Dao 在这个项目上的工作。
Rails 与外键的关系一直很复杂,但戏剧性的日子已经结束了。如果你想要外键,你就可以拥有外键,Rails 仍然会微笑着接受你的订单。迁移 DSL 增加了 add_foreign_key 和 remove_foreign_key 方法,并且标准的 schema.rb dumper 将支持维护这些声明。外键支持最初是 MySQL 和 PostgreSQL 适配器的专属功能。
以上只是亮点。此版本包含比这更多的精彩功能。你可以在发布说明中阅读精彩的总结。
根据我们的维护政策,Rails 4.2 的发布意味着 Bug 修复将仅适用于 4-2-stable,常规安全问题适用于 4.2.x、4.1.x,以及严重安全问题适用于 4.2.x、4.1.x 和 3.2.x。除了这些已声明的承诺外,尊贵的 Rafael França 还同意将 Bug 修复应用于 4-1-stable。所以,所有仍在 4.1 版本上且无法快速升级的用户都可以感谢 Rafael!
Rails 4.2 也标志着 4.x 系列的最后一个主要版本发布。随着此版本的发布,我们现在正朝着 Rails 5.0 发行版迈进!这意味着 rails/master 现在将以 5.0 为目标。
Rails 5.0 将仅支持 Ruby 2.2+。Ruby 2.2 中将会有大量的优化,这些优化将非常出色,但对 Rails 而言最重要的是,符号将能够被垃圾回收。这意味着我们在接受外部输入时,可以大大减轻处理字符串的负担。这也意味着我们可以完全转换为关键字参数以及最新 Ruby 的所有其他优点。
Rails 5.0 的发布目标目前是 2015 年秋季。还有一段时间,但我们在此告知大家,以便 gem 维护者和其他 Ruby 实现者了解我们的方向。一旦这些变得更清晰,我们将着手制定一个功能路线图。
能够参与到令人惊叹的 Ruby on Rails 社区——包括贡献者和用户——一直是一种荣幸和愉悦。协作和由此产生的质量从未如此之好。祝大家节日快乐,新年快乐,我们将在 2015 年带来更多精彩的发布!