【譯】Rails 5.0正式發布:Action Cable,API模式等

原文請見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 MakhmaliMatthew Draper對Action Cable的產生做出的貢獻。

API模式

當你想創建一個全棧應用,即不僅包含渲染HTML網頁的服務端,還同時支持客戶端Javascript和只與后端用JSON通訊的原生應用時,Rails不是唯一最好的選擇。API模式讓這變得更清晰。當你用新的rails參數--api創建新的后端時,你將得到一個專為JSON,而不是HTML配置的簡潔的框架。

這個特性還有很多工作要做,但這是一個很好的開始。默認情況下,API模式在model中只處理to_json調用。當然你也可以使用更高級的插件,如JbuilderActive Model Serializers,或者新的JSONAPI::Resources項目。

特別感謝Santiago PastorinoJorge 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)

還有很多新特性,請見每個組件的詳細發布說明:

Action Mailer CHANGELOG

Action Pack CHANGELOG

Action View CHANGELOG

Active Model CHANGELOG

Active Record CHANGELOG

Active Support CHANGELOG

Active Job CHANGELOG

Railties CHANGELOG

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容