2015 年 12 月 18 日,星期五

Rails 5.0.0.beta1:Action Cable、API 模式、Rails 命令

由 dhh 发帖

Rails 5.0!你能相信吗?就在前几天,我们刚刚欢庆了 Rails 1.0 十周年。当你在和好朋友一起玩乐时,时间总是过得飞快,而在 Rails 社区,我们从未有过比现在更快乐的时候,也没有过比现在更好的朋友,所以难怪它会嗖地一下飞过去!现在只是第一个 beta 版本,但 Rails 5.0.0.beta1 已在 Basecamp 3 中投入生产运行。

Action Cable

Rails 5.0 中的重大新功能是一个全新的 WebSockets 处理框架,名为 Action Cable。它是一个完全集成的解决方案,包括一个 EventMachine 支持的连接循环、用于服务器端处理的线程支持的频道层,以及用于客户端交互的 JavaScript 层。它非常易于使用,而且可以更轻松地设计聊天、通知和状态等实时功能。如果想了解其实际运行情况,它已为 Basecamp 3 的所有这些功能提供支持。

Action Cable 真正美妙之处在于,它能让你在进行 WebSockets 工作时,访问到你的整个 Active Record 和 PORO 域模型。我们甚至添加了一个全新的 ActionController::Renderer 系统,让你可以在控制器之外轻松地呈现模板,以便在要为 WebSocket 响应重新使用服务器端模板时使用。

在开发过程中,Action Cable 与你的其他应用程序一起在进程中运行。为此,我们已将默认的开发服务器从 Webrick 切换为 Puma。在生产环境中,你可能希望在自己的进程中运行 Action Cable 服务器。这就是我们在 Basecamp 规模化运行它的方式。

特别感谢 Pratik NaikJavan Makhmali 为此进行奠基性工作。

API 模式

在要构建一个使用 HTML 模板服务器端呈现的全栈应用程序时,Rails 不仅是一个绝佳选择,而且对于新一代客户端 JavaScript 或本机应用程序而言也是一个很棒的伴侣,这些应用程序仅需要后端生成 JSON。我们现在使用新的 –api 模式让这一点变得更加清晰。如果你使用 rails new backend --api 创建新的 Rails 应用程序,你将获得一个精简的框架和配置,它假定你将使用 JSON 而不是 HTML。

此功能仍有待完善,但我们取得了良好的开端。默认情况下,API 模式仅依赖于模型类上的 #to_json 调用。但可以 JbuilderActive Model Serializers,或查看新的 JSONAPI::Resources 项目,以寻求更高级的解决方案。

尤其感谢 Santiago PastorinoJorge Bejar 使之成真。

一项 Rails 命令来统治它们

为何一些命令在 bin/rails 中,而一些命令在 bin/rake 中?这是一个常见问题,尤其对于初学者来说,我们从来就没有一个好的答案(只是很多技术借口)。因此,我们现在致力于将 bin/rails 作为一项主命令来统治它们。所有的 rake 命令都可以通过此作为网关获得,不过我们最终将其中很多移植过来。因此,您的手指现在要习惯使用 bin/rails db:migrate 而不是 bin/rake db:migrate。这应该只需要几个月!

Kasper Timm Hansen 一直在管理这个项目。

其他一些亮点

  • Sean Griffin 提供的 New Attributes API
  • 测试运行程序现在以内联方式报告故障,因此您不必完成整个套件即可查看出错位置。
  • ApplicationRecord 已诞生,作为所有由生成器创建的模型的默认父类。
  • ActiveRecord::Relation#in_batches 大大简化了批量处理记录工作,从而减轻内存过载。
  • Post.where(‘id = 1’).or(Post.where(‘id = 2’)) 会给您您想要的东西!
  • 不再因为最后一条语句为 false 而意外中止 Active Record 回调。现在您可显式抛出 (:abort)!

不过,您真的应该查看更新日志。所有框架中的新内容和好东西都太多了

Claudio 做了一个 简洁的小幻灯片集,介绍了他最喜欢的部分改进(以及移除)!

另请注意,我们正在逐步开发 Turbolinks 5,它带有本机 iOS 和 Android 包装器实现!- 计划与 Rails 5 同步发布。您可以在 basecamp/turbolinks/v5 上关注它。

维护后续

根据我们的 维护政策,Rails 5.0 发布意味着今后 bug 修复仅适用于 5.0.x,常规安全问题适用于 5.0.x 和 4.2.x,严重安全问题也适用于 5.0.x 和 4.2.x(但是如果 5.1 发布,则适用于 5.1.x、5.0.x 和 4.2.x)。这意味着 4.1.x 和更低版本基本上不受支持!现在,Ruby 2.2.2+ 也是 Rails 惟一受支持的 Ruby 版本。

请帮助我们让 Rails 5.0 变得可靠!

我们在像这样的重大发布之前,依赖于社区中的每个人提供反馈以清除 bug 并升级问题。因此,请尝试在你的应用程序上试用 Rails 5.0,如果你今天要启动新的应用程序,你应该使用 beta1,如果你对 Rails 稍有了解的话。

问题可以记录在 Github 问题跟踪器 中。

现在,有 789 人对 Rails 这个新发布版本做出了贡献。请成为他们中的一员!

针对 Rails 5.0 的动态发布经理组合是 Eileen M. UchitelleSean Griffin。无可争议的 PR 合并冠军是 Rafael França