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灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP