经过六个月的完善、四个 beta 版本和两个候选版本,Rails 5.0 终于完成了!它花费了数百名 贡献者 和数千项提交,但它的目标令人惊叹:Rails 5.0 无疑是迄今为止最棒的、最完整的 Rails 版本。时至今日,这个社区仍然如此强大,真是令人难以置信。感谢所有帮助我们完成这项工作的人们。
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 中运行它的方式。
特别感谢 普拉蒂克·纳伊克、贾万·马克哈马利 和 马修·德雷珀 对 Action Cable 的开创性工作。
在希望构建对 HTML 模板进行服务器端渲染的全栈应用程序时,Rails 并不是仅有的绝佳选择;它还是需要后端来说 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 主导)。不过,您真的应该签出变更日志。所有架构中都有许多全新且好用的东西
Rails 5.0 也搭载 Turbolinks 5 – 它拥有原生的 iOS 和 Android 包装程式导入!如果您过去已经排除 Turbolinks,我强烈建议您签出 Sam Stephenson 的 RailsConf 报告:Turbolinks 5:我不敢相信这不是原生功能!。
在 Rails 5.0 的完整版本说明 中有更详细的内容,而且 Claudio B. 做了一份 简洁且好的简报,涵盖他最喜爱的几项改善内容(以及移除的内容!)。我还制作了一个全新的 让我们在 Rails 5 构建部落格 影片,以展示其基础知识。
您动态的 Rails 5.0 版本发行经理是 Eileen M. Uchitelle 和 Sean Griffin。而当之无愧的公共关系合并冠军是 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+ 版本。