我们正在为 Rails 诞生十周年以来的第一个主要新版本做最后的润色。虽然大多数软件在运行十年后都可能已经退休,但 Rails 却从未如此健康。此版本包含大量有用的功能,能让您的工作更轻松、应用速度更快,并带来更佳的整体体验。
Rails 4.2 的主要特色是全新的 Active Job 框架及其集成。Active Job 是一个基于队列系统(如 Resque、Delayed Job、Sidekiq 等)的适配层。您可以编写自己的 Active Job,它们无需任何修改即可在所有这些队列上运行。
通过始终配置好的队列(尽管默认只是一个内联运行器),我们可以在合理的地方在此基础上进行扩展。其中第一个合理的扩展就是异步发送 Action Mailer 电子邮件。因此,我们引入了#deliver_later 方法,该方法的作用正如其名:将您的电子邮件添加到队列中以供发送,这样就不会拖累控制器或模型。搞定!
锦上添花的是我们新的 GlobalID 库。它通过以通用形式序列化 Active Record 对象,轻松地将它们传递给作业。这意味着您不再需要手动打包和解包 Active Record,只需传递 ID 即可。直接将 AR 对象交给作业,它将使用 GlobalID 进行序列化,并在运行时反序列化。这简直太方便了!
特别感谢 Cristian Bica 和 Abdelkader Boudih 为 Rails 带来的这三项改进所付出的杰出工作!
Aaron Patterson 始终致力于在 Rails 中寻找性能提升的机会,通过一个名为 Adequate Record 的 Active Record 改进项目,他取得了显著成就。在 Rails 4.2 中,许多常见查询的速度提升了至少一倍!这是性能方面的一大飞跃。虽然计算机价格不断下降,性能不断提升,但没有人说过“嘿,从我的框架里免费获取一些性能”。所以,瞧:一点免费的性能,朋友!
来自精彩的 Rails Google Summer of Code 项目的成果是 Web Console。这是一个可在浏览器中使用的 IRB 控制台。在开发模式下,您可以访问 `/console` 并直接在那里进行操作。
这很棒,但更令人难以置信的是,此控制台会自动出现在所有异常页面上!因此,当出现问题时,您将能够立即检查当前状态。它甚至允许您在回溯的不同点之间跳转,并在该点检查相关内容。
这是对调试工作流程的绝佳改进。感谢 Genadi Samokovarov 和 Ryan Dao 在此项目上的贡献。
Rails 4.2 中其他精彩内容的快速亮点
respond_with 已移出,并归入了其应有的位置,即 responders gem。add_foreign_key/remove_foreign_key。config/environments/*`、`config/application.rb` 和 initializers 中添加了 `config.x.whatever.you_want = true`,用于自定义应用程序配置。Rails::Application.config_for(:some_yaml),可以轻松加载存储在 `config/` 中的 YAML 配置。我们也在准备一份初步发布说明。
根据我们的维护政策,Rails 4.2 的发布意味着错误修复将仅适用于 4-2-stable,常规安全问题将影响 4.2.x、4.1.x,而严重安全问题将影响 4.2.x、4.1.x 和 3.2.x。除了这些已声明的承诺外,尊敬的 Rafael França 还同意为 4-1-stable 应用错误修复。因此,所有仍在使用 4.1 且无法快速升级的用户都可以感谢 Rafael!
Rails 4.2 将标志着 4.x 系列的最后一个主要版本。发布后,我们将着手开发重要的 Rails 5.0!这意味着一旦 4.2 的发布候选版开始出现并创建 4-2-stable 分支,rails/master 将以 Rails 5.0 为目标。
Rails 5.0 很可能将以 Ruby 2.2 为目标。Ruby 2.2 中有很多优化将非常有用,但对 Rails 最重要的是,符号将能够被垃圾回收。这意味着在处理来自外部世界的输入时,我们可以减少大量与字符串管理相关的开销。这也意味着我们可以完全转换为关键字参数以及其他最新的 Ruby 功能。
Rails 5.0 的发布目标目前是 2015 年春/夏。还有一段时间,但我们提前公布这些信息,以便 gem 维护者和其他 Ruby 实现者了解我们的方向。
我们依赖社区的反馈来在大型发布前发现错误和升级问题。因此,请在您的应用程序中尝试使用 Rails 4.2。如果您今天正在启动一个新项目,那么您应该考虑使用 beta1 版本,前提是您对 Rails 有一定的了解。
问题可以记录在 Github issues tracker 上。
到目前为止,已有 476 位贡献者参与了这个新版本的 Rails。请您也成为其中一员!