Ruby 板


LINE

原文:http://blog.xdite.net/posts/2013/05/04/rails4-new-feature/ 日期:2013/05/04 作者:xdite Rails 4: New Feature, Better Syntax TL;DR : Rails 4 是一個溫和加強版的 Rails3,而且贈送了很多 酷炫 feature,適合進場 上個月花了一點時間直接衝了 Rails 4.0beta1,利用 upgrade project 去熟悉整個 Rails4 新的架構。 若要我形容對於 Rails4 這次升級的感想的話,我會總結為兩句話 New Feature, Better Syntax。 相較於 Rails 2 -> Rails 3 幾乎是個毀天滅地的重新大改寫(i.e. 不管是 Rails 本身,還是使用 Rails 開發的 project),Rails 3 -> Rails 4 的升級及變更內容顯得溫和許多。 Better Syntax Rails 4 這次的改進,許多都是吵了多年以來的折衷方案、或者是許 多開發者對如何設計,始終各自有 strong opinion 的主題,都找到 best practices 而被一槌定音了。或者是一些一直以來大家覺得老 是被逼著這樣寫,非常智障的設計,也都被改掉了… Routing 讓 Routing 更安全:新增了以 http verb 為 syntax 的寫法,如 get/post 支援 Rouring concern: 如果要幫不同的 resources 加上如同 : comments 這樣的 nested_resources 就不用一直再重複貼上 ActiveRecord 強迫 scope 的寫法要全面改成 proc / lambda:避免 eager-evaluated 出現的問題。 Relation#not:以往要寫出 not 的查詢條件,寫法讓人哭笑不得。 Relation#none:以往撈不出集合,是 nil,要回傳 [] 空集合要自己作.. Relation#pluck:可以輕鬆只摘出某些欄位,以及要自己手下 select… Relation#unscope:避免 default_scope + order 產生的排序問題。 (因為下 except 無法閃過去) update & update_columns:update 會觸發 callbacks, update_column 不會,但是 update_column 無法送多個 params,於是必須只好用 sneaky-save 這個 solution 繞過。現在 4 直接支援 update_columns ActionController before_filter 更名為 before_action:就是正名... respond_to do |format| 拿掉 xml 以 json 取代:2013 年了,沒人再 拿 xml 當 default API... Security 拿掉 attr_accessible,改用 strong_paraments:去年 Github 被打下 的事情鬧很大,Rails 的安全策略重新被檢討,於是最後社群討論出採用 strong_parameters 得這個 best practices。 Other 砍掉 public/index.html : 砍掉愚蠢的 publc/index.html,以往教 Rails 初學者第一課就是記得砍掉這個預設檔案,不然寫的東西都會看不到 add_flash_type :以往警告訊息只有 [:notice , :alert, :error ] 三種類型,但是自從有 bootstrap 之後。大家習慣使用的是 [:notice , :warning, :error]。 要套版時要一直手加 , :flash => { :warning => "Oh no!" } 是很 智障的事,Rails4 開放自定義 flash types。(P.S. 這是我提的...) mem_cache_store 換成 dalli:自從 1.9 出了之後,原先的 :mem_cache_store (memcache-client)會撞到 utf8 問題,於是大家都改用 dalli 作為 backend cache,Rails 4 的 :mem_cache_store 預設將改為 dalli。 New Feature Model Concern / Controller Cern: 重複用到的 method使用 Concern 複用 Turboklinks : 無痛自動 pjax。pjax 不難,只要你用 Rails4 … Cache Digest: 採用 Russian Doll Cache Strategy,智能 cache 設計,以前 多層 partial cache 的問題讓大家實在很頭大。 HTML5 input form helpers: 現在是 HTML5 的時代,開發時自然會使用很多 js plugin,如calendar plugin,但用傳統的 form object 去產生這些 field 實在很痛苦。Rails4 內建了 HTML5 input form helpers。 採用 jbuilder 產生 json : 生 json 可以採用類似生 rss 的方式寫 builder, 真是驚訝這個 feature 現在才出現 …. 結論 學 Rails4 最快的方式不是看書,因為總體而言,這次的升級並不是什麼大破壞。 改良的 syntax 和好用的新 feature。反而應該會減少不少平常開發上的負擔。 而學習 Rails4 最好的方式就是用勇敢在現有的 project 上,大方的開一個 rails4 branch 下去練習升。 不用花很多時間你就能感受到 Rails4 新 feature 帶來給你的好處… // 警告:以上建議只針對 Senior Rails Developer。目前還有一些 gem 沒有 Rails4 版本。所以 project 升級有時候會遇到必須要自己 fork gem「手動升級 /Hack」的狀況,不熟包 gem 者勿輕易嘗試。 這次內建的一些 feature,其實都還蠻有意思的,也許將來還會挑幾篇特別再寫 幾篇文章... 資源 http://www.upgradingtorails4.com/ http://blog.wyeworks.com/2012/11/13/rails-4-compilation-links/ http://blog.remarkablelabs.com/2012/11/rails-4-countdown-to-2013 http://www.edgerails.info/ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 172.56.32.112







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP