原文請見http://weblog.rubyonrails.org/2016/6/30/Rails-5-0-final/,DHH6月30號發布的Blog。
從Rails 2.0開始接觸,大概是2007年,一晃快10年了,Rails也從2.0升級到了5.0。感慨一下,一問如下。
經過6個月的打磨,4個beta版和2個RC版,經過數百個貢獻者的上千次提交,Rails 5.0終于發布了!這個版本無疑是目前為止最好的、完成度最高的Rails。這個社區長久以來的強勁動力是不可思議的,謝謝每個幫助我們走到今天的人。
Rails 5.0中有兩個關鍵特性:
Action Cable
Action Cable是Rails處理WebSockets的新框架,一個集成了連接管理、用于服務端的頻道層和用于客戶端的Javascript層的完整的解決方案。它很易用,讓在線功能的設計都更容易,如聊天、通知、展示等。如果你想看看實例的話,Basecamp 3的這些功能就是用Action Cable實現的。
Action Cable最吸引人的地方是你可以從WebSockets中訪問Active Record和PORO(Plain Old Ruby Object)域模型。我們還添加了一個新的ActionController::Renderer系統,讓你需要在WebSockets相應中重用服務端模板時,可以在controller之外渲染你的模板。
在開發模式下,Action Cable運行于當前進程內。為了支持這一點,我們把Rails默認的開發服務器從Webrick改成了Puma(多線程模型的server)。在生產模式下,你最好在獨立的進程中運行Action Cable,我們在Basecamp上就是這么大規模使用的。
特別感謝Pratik Naik,Javan Makhmali和Matthew Draper對Action Cable的產生做出的貢獻。
API模式
當你想創建一個全棧應用,即不僅包含渲染HTML網頁的服務端,還同時支持客戶端Javascript和只與后端用JSON通訊的原生應用時,Rails不是唯一最好的選擇。API模式讓這變得更清晰。當你用新的rails參數--api創建新的后端時,你將得到一個專為JSON,而不是HTML配置的簡潔的框架。
這個特性還有很多工作要做,但這是一個很好的開始。默認情況下,API模式在model中只處理to_json調用。當然你也可以使用更高級的插件,如Jbuilder,Active Model Serializers,或者新的JSONAPI::Resources項目。
特別感謝Santiago Pastorino和Jorge Bejar讓此事成真。
其他亮點
用一個rails命令替換原來讓人精神分裂的rake和rails。現在是rails db:migrate,而不是rake db:migrate了。
New Attributes APIbySean Griffin.
測試將及時報錯,你不用等全部跑完就能看到錯誤了。
ApplicationRecord成為所有生成器創建的model的基類。
ActiveRecord::Relation#in_batches 讓記錄處理工作更容易一次成批的處理,以減少內存消耗。
可以這樣用:Post.where(‘id = 1’).or(Post.where(‘id = 2’))?
不再會有偶然出現的停止ActivieRecord回調,現在你可以明確的 throw(:abort)
還有很多新特性,請見每個組件的詳細發布說明:
Rails 5.0還搭載了Turbolinks 5--一個組件包含原生iOS和Android實現(一個能夠實現把下一個請求的網頁加載在當前頁中的技術,有移動端的原生實現)。如果你還不了解他,我勸你看看Sam Stephenson在RailsConf上的介紹:Turbolinks 5: I Can’t Believe It’s Not Native!.
更多細節請見Rails 5.0完整版發布說明。Claudio B. 做了個很好的小演示介紹了一些他很喜歡的改進(和刪除的)。我還有個基礎的演示視頻用Rails 5搭個Blog。