Rails 5.0!你能相信吗?就在前几天,我们刚刚欢庆了 Rails 1.0 十周年。当你在和好朋友一起玩乐时,时间总是过得飞快,而在 Rails 社区,我们从未有过比现在更快乐的时候,也没有过比现在更好的朋友,所以难怪它会嗖地一下飞过去!现在只是第一个 beta 版本,但 Rails 5.0.0.beta1 已在 Basecamp 3 中投入生产运行。
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 Naik 和 Javan Makhmali 为此进行奠基性工作。
在要构建一个使用 HTML 模板服务器端呈现的全栈应用程序时,Rails 不仅是一个绝佳选择,而且对于新一代客户端 JavaScript 或本机应用程序而言也是一个很棒的伴侣,这些应用程序仅需要后端生成 JSON。我们现在使用新的 –api 模式让这一点变得更加清晰。如果你使用 rails new backend --api
创建新的 Rails 应用程序,你将获得一个精简的框架和配置,它假定你将使用 JSON 而不是 HTML。
此功能仍有待完善,但我们取得了良好的开端。默认情况下,API 模式仅依赖于模型类上的 #to_json 调用。但可以 Jbuilder、Active Model Serializers,或查看新的 JSONAPI::Resources 项目,以寻求更高级的解决方案。
尤其感谢 Santiago Pastorino 和 Jorge Bejar 使之成真。
为何一些命令在 bin/rails
中,而一些命令在 bin/rake
中?这是一个常见问题,尤其对于初学者来说,我们从来就没有一个好的答案(只是很多技术借口)。因此,我们现在致力于将 bin/rails
作为一项主命令来统治它们。所有的 rake 命令都可以通过此作为网关获得,不过我们最终将其中很多移植过来。因此,您的手指现在要习惯使用 bin/rails db:migrate
而不是 bin/rake db:migrate
。这应该只需要几个月!
Kasper Timm Hansen 一直在管理这个项目。
不过,您真的应该查看更新日志。所有框架中的新内容和好东西都太多了
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 版本。
我们在像这样的重大发布之前,依赖于社区中的每个人提供反馈以清除 bug 并升级问题。因此,请尝试在你的应用程序上试用 Rails 5.0,如果你今天要启动新的应用程序,你应该使用 beta1,如果你对 Rails 稍有了解的话。
问题可以记录在 Github 问题跟踪器 中。
现在,有 789 人对 Rails 这个新发布版本做出了贡献。请成为他们中的一员!
针对 Rails 5.0 的动态发布经理组合是 Eileen M. Uchitelle 和 Sean Griffin。无可争议的 PR 合并冠军是 Rafael França!