Ruby on Rails 5.0 发布
这是由数百位贡献者，历经上千次的提交而达成的一个新的里程碑，Rails 5.0 无疑是迄今为止最好、最完善的 Rails 版本。 经过了这么久的发展，社区依然具有如此活力，感谢每一位帮助过我们的人们！
Ruby Ruby on Rails ROR
123.138.79.8
昨天就更新到5.0啦，哈哈
qiansen [Mobile Safari 9.0|iOS 9.3]
2016-07-03T13:04:19.000
这是由数百位贡献者，历经上千次的提交而达成的一个新的里程碑，Rails 5.0 无疑是迄今为止最好、最完善的 Rails 版本。 经过了这么久的发展，社区依然具有如此活力，感谢每一位帮助过我们的人们！
经过了六个月的努力，发布了 4 个 beta 版本、2 个 RC 版本，Rails 5.0 终于正式发布了！


Rails 社区的[公告](http://weblog.rubyonrails.org/2016/6/30/Rails-5-0-final/)中说，“这是由数百位[贡献者](http://contributors.rubyonrails.org/releases/5-0-0/contributors)，历经上千次提交而达成的一个新的里程碑，Rails 5.0 无疑是迄今为止最好、最完善的 Rails 版本。 经过了这么久的发展，社区依然具有如此活力，感谢每一位帮助过我们的人们！”


![Ruby on Rails](/data/attachment/album/201607/03/112717dbyqsjnxqnnalktb.png)


在本次发布的 Rails 5.0 中，有两大亮点：


### Action Cable


[Action Cable](https://github.com/rails/rails/tree/master/actioncable) 是一个重新打造的框架，用于在 Rails 中控制 WebSocket。它是一个完全整合的解决方案，包括了连接管理、用于服务器端处理的 channel 层以及客户端交互的 JavaScript 层。它增加了易用性，让设计类似聊天、提示、现场等实时功能更加容易。如果你想看看它的具体表现，你可以看看它在 [Basecamp 3](https://basecamp.com/) 强大的表现。


Action Cable 中最棒的地方是你可以在你的 WebSocket 里面访问你的整个 Active Record 和 PORO 域模型。如果你想为 WebSocket 响应复用服务器端模板的话，甚至还有一个全新打造的 [ActionController::Renderer](http://blog.bigbinary.com/2016/01/08/rendering-views-outside-of-controllers-in-rails-5.html) 系统可以使你在控制器之外渲染你的模板。


在开发模式时，Action Cable 可以运行在你的应用内部，你只需要将默认的开发服务器从 Webrick 切换到 [Puma](http://puma.io/) 即可。在产品环境中，你也可以让 Action Cable 运行自己的服务器。


### API 模式


Rails 不仅是你使用服务器端 HTML 模板渲染来构建全栈应用的最佳选择，而且也是开发客户端 JavaScript 或原生应用的好伴侣，只需要用 JSON 和后端通讯即可。新推出的 -api 模式可以让你使用 `rails new backend --api` 创建一个新的 Rails 应用，这样会采用 JSON 而不是 HTML 作为应用骨架和配置。


这个功能还需要更多的完善，不过这是一个良好的开端。


### 其它亮点


* 不用再使用 rake 命令了，统一采用一个 rails 命令即可。比如现在用 `bin/rails db:migrate` 取代了 `bin/rake db:migrate`。
* [新的属性 API](https://github.com/rails/rails/blob/8c752c7ac739d5a86d4136ab1e9d0142c4041e58/activerecord/lib/active_record/attributes.rb)。
* 生成器创建的所有模型都以 ApplicationRecord 为默认父类。
* 等等……


具体你应该看看各个部分的变更日志，都有不少变化：


* [Action Mailer CHANGELOG](https://github.com/rails/rails/blob/v5.0.0/actionmailer/CHANGELOG.md)
* [Action Pack CHANGELOG](https://github.com/rails/rails/blob/v5.0.0/actionpack/CHANGELOG.md)
* [Action View CHANGELOG](https://github.com/rails/rails/blob/v5.0.0/actionview/CHANGELOG.md)
* [Active Model CHANGELOG](https://github.com/rails/rails/blob/v5.0.0/activemodel/CHANGELOG.md)
* [Active Record CHANGELOG](https://github.com/rails/rails/blob/v5.0.0/activerecord/CHANGELOG.md)
* [Active Support CHANGELOG](https://github.com/rails/rails/blob/v5.0.0/activesupport/CHANGELOG.md)
* [Active Job CHANGELOG](https://github.com/rails/rails/blob/v5.0.0/activejob/CHANGELOG.md)
* [Railties CHANGELOG](https://github.com/rails/rails/blob/v5.0.0/railties/CHANGELOG.md)


更多的细节，你可以看看[完整的 Rails 5.0 发布公告](http://guides.rubyonrails.org/5_0_release_notes.html)，Claudio B. 做了一篇[简短的演示](https://speakerdeck.com/claudiob/rails-5-awesome-features-and-breaking-changes)来介绍了他喜欢的一些改进（和一些功能的去除），DHH 本人也录制了一段基础性的介绍视频： [让我们用 Rails 5 打造一个博客](https://www.youtube.com/watch?v=OaDhY_y8WTo) 。


此外要注意，根据 Rails 的[维护策略](http://guides.rubyonrails.org/maintenance_policy.html)，Rails 5.0 的发布代表着以后将只会对 5.0.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 及以上版本。**


（题图来自：mobiloitte.com）

