经过六个月的打磨、四个 Beta 版本和两个发布候选版本,Rails 5.0 终于完成了!它汇集了数百名贡献者和数千次提交才得以问世,但这是一个多么棒的目的地:Rails 5.0 无疑是迄今为止最好、最完善的版本。令人难以置信的是,这个社区在如此长的时间里依然如此充满活力。感谢所有帮助我们走到今天的人。
Rails 5.0 的两大亮点功能如下:
Action Cable 是 Rails 中一个全新的 WebSocket 处理框架。它是一个完全集成的解决方案,用于管理连接、服务器端处理的通道层以及客户端交互的 JavaScript 层。它使用起来极其简单,可以让你更轻松地设计实时功能,例如聊天、通知和在线状态。如果你想亲眼看看它的实际应用,它可以驱动Basecamp 3的所有这些功能。
Action Cable 最可爱的地方在于,你可以在 WebSocket 工作中访问你所有的 Active Record 和 PORO 领域模型。我们甚至还增加了一个全新的ActionController::Renderer系统,这使得在控制器外部渲染模板变得轻而易举,当你想要为 WebSocket 响应重用服务器端模板时。
在开发环境中,Action Cable 与你的应用程序的其余部分同进程运行。为此,我们将默认开发服务器从 Webrick 切换到了Puma。在生产环境中,你可能希望将 Action Cable 服务器运行在自己的进程中。我们 Basecamp 就是这样大规模运行的。
特别感谢Pratik Naik、Javan Makhmali 和Matthew Draper 在 Action Cable 方面所做的开创性工作。
Rails 不仅是构建使用服务器端渲染 HTML 模板的全栈应用程序的绝佳选择,也是新一代仅需要后端进行 JSON 通信的客户端 JavaScript 或原生应用程序的绝佳伴侣。通过新的 –api 模式,我们现在将这一点做得更加清晰。如果你使用 rails new backend --api 创建一个新的 Rails 应用程序,你将获得一个精简的骨架和配置,假定你将处理 JSON 而不是 HTML。
此功能仍有许多工作要做,但我们已经取得了良好的开端。默认情况下,API 模式仅依赖于模型类的 #to_json 调用。但你可以使用 Jbuilder、Active Model Serializers,或者查看新的 JSONAPI::Resources 项目以获得更高级的解决方案。
特别感谢Santiago Pastorino 和Jorge Bejar 使这一切成为可能。
bin/rails db:migrate 而不是 bin/rake db:migrate (由Kasper Timm Hansen 负责整理)。不过,你真的应该看看 CHANGELOGs。所有框架中都有太多新颖且优质的功能。
Rails 5.0 还附带了Turbolinks 5——那个带有原生 iOS 和 Android 包装实现的版本!如果你以前就忽略了 Turbolinks,我强烈建议你观看 Sam Stephenson 在 RailsConf 上的演讲:Turbolinks 5: I Can’t Believe It’s Not Native!。
在完整的 Rails 5.0 发布说明中有更多详细信息,Claudio B. 还制作了一个很棒的幻灯片集,介绍了他最喜欢的一些改进(和移除!)。我还制作了一个全新的使用 Rails 5 构建博客视频来演示基本用法。
Rails 5.0 的动态发布管理二人组是Eileen M. Uchitelle 和Sean Griffin。而无可争议的 PR 合并冠军是Rafael França!
注意:根据我们的维护政策,Rails 5.0 的发布意味着错误修复仅适用于 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 5.0+ 的唯一支持版本。