[连结] Rails4:New Feature,Better Syntax-xdite

楼主: breakanyrule (三年)   2013-09-25 16:16:04
原文: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/

Links booklink

Contact Us: admin [ a t ] ucptt.com