99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

升級(jí)到Rails4

2018-10-22 09:36 更新

Rails4的教程在網(wǎng)絡(luò)上還是比較少見的,但是Rails4的強(qiáng)大性卻是毋庸置疑,究竟Rails4有什么新特性呢?讓我們一起來(lái)看一看瞧一瞧吧!

總體

1. 支持Ruby 2.0

不支持Ruby1.8系了,最低也得1.9.3。

2. 動(dòng)態(tài)查找器沒有了

這個(gè)東西太靈活了,代碼可能少敲兩個(gè)字母,外人看來(lái)容易引起迷惑。 
原來(lái)是 find_by_name ‘a(chǎn)aa’ 
現(xiàn)在是 find_by name:’aaa’

Rails4升級(jí)

3. routing里禁止了match

即如果用match的話就必須給:via選項(xiàng)。

否則的話默認(rèn)開啟了GET和POST等,容易導(dǎo)致CSRF攻擊。 
請(qǐng)直接用協(xié)議,比如 
post ‘controller/action’ => ‘controller#action’

4. 增加concerns目錄

為了解決業(yè)務(wù)邏輯無(wú)處可寫的窘境,在controller和model各添加了標(biāo)準(zhǔn)的concerns目錄,這里的文件都是autoload的。

5. 用bin目錄代替script目錄

不多說(shuō),rails,rake,bundle都放這里。

6. 可以在瀏覽器上瀏覽route設(shè)置。

之前需要通過(guò)rake routes命令,現(xiàn)在可以在瀏覽器通過(guò)路徑/rails/info/routes來(lái)確認(rèn)了。

Modle相關(guān)

7. 增加where.not

如何在sql里查找不屬于某個(gè)人的東西? 
where name <> ‘user abc’ 
在rails4里可以User.where.not(name: name)

8. pluck可以接受多個(gè)列

最初為啥不設(shè)計(jì)成這樣呢? 
現(xiàn)在可以Book.where(???).pluck(:title,:price)

9. update_columns

不調(diào)用驗(yàn)證方法和callback,速度很快。 
同時(shí)廢棄了update_column方法

10. update_attributes變?yōu)閡pdate方法了

名字長(zhǎng)度減了一半。

11. 加強(qiáng)對(duì)PostgreSQL的支持

mysql真是江河日下啊。 
增加了hstore(無(wú)schema),UUID,range,inet,cidr等。

ActionPack的變更點(diǎn)

12. PUT變PATCH

誰(shuí)沒事老翻舊帳?反正是因?yàn)镻UT不準(zhǔn)確,以后都用PATCH了。 
我覺得POST應(yīng)該一塊改CREATE得了。

13. before_filter 改為before_action

我覺得還是原來(lái)的名字好。。。

14. routing改善

后段從Rack::Mount換為Journey了

模板

15. 嵌套緩存的自動(dòng)廢棄

被嵌套的緩存變化時(shí),會(huì)自動(dòng)廢棄包含之的緩存。 
model也是,可以子model通知父model。

16. 增加了.ruby模板

可以處理文字,數(shù)據(jù),圖像等。

性能方面的改善

17. AssetPipeline

這個(gè)東西雖然3就有了,但是不是說(shuō)那么好用的。 
主要問(wèn)題就是預(yù)編譯速度慢,以及核心的Sprockets的版本太老。 
rails4解決了這兩個(gè)問(wèn)題。

18. TurboLinks

這個(gè)東西比aset pipeline還前衛(wèi),簡(jiǎn)單來(lái)說(shuō)它的做法就是畫面顯示之后,你點(diǎn)擊連接后它會(huì)通過(guò)ajax來(lái)取得新頁(yè)面,然后再判斷新頁(yè)面里的asset(css,js)之類的有沒有變化,如果有變化,則全頁(yè)reload,否則的話,只替換body和title里的東西。這就省去了解析裝載css,js的時(shí)間。

其做法導(dǎo)致的問(wèn)題是頁(yè)面本身不會(huì)被重新裝載,也就是說(shuō) window.onload,jquery的.ready方法就用不了了 
不過(guò)貌似有個(gè)gem叫jquery-turbolinks可以解決這個(gè)問(wèn)題。

realtime web

19. ActionController::Live

mixin這個(gè)類,然后再調(diào)用response.stream.write就可以通信了。 
但是WEBrick不支持realtime通信,開發(fā)的時(shí)候可以用puma。

另外值得一提的是,針對(duì)實(shí)時(shí)通信,Passenger和Unicorn等這些多進(jìn)程的web server就顯得力不從心了;最好選用多線程,事件驅(qū)動(dòng)的web server,比如puma 。

20. spring

此spring非彼spring,它要解決的是load各種lib時(shí)的效率問(wèn)題。 
簡(jiǎn)單來(lái)說(shuō)第一次啟動(dòng)時(shí)同時(shí)啟動(dòng)一個(gè)高速load的服務(wù)進(jìn)程,第二次再load的時(shí)候,速度就會(huì)變快。 
此模塊跟DHH開發(fā)的Commands大同小異,目前誰(shuí)將是將來(lái)rails的標(biāo)準(zhǔn),還沒定論。

21. schema cache dump

定義一二model幾乎不費(fèi)一行代碼,因?yàn)楹芏嘈畔⒍际莚ails從數(shù)據(jù)庫(kù)里取得反推敲出來(lái)的,這就浪費(fèi)了一定的時(shí)間。 
可以通過(guò)rake db:schema:cache:dump來(lái)生成schema cache dump文件,提高系統(tǒng)啟動(dòng)時(shí)間。

rails安全方面

安全相關(guān)

2012年,有人在用rails編寫的托管著rails代碼的github通過(guò)rails漏洞(嚴(yán)格來(lái)說(shuō)是編碼問(wèn)題?)冒充rails的committer提交了代碼。

22. Strongparameters

和之前的model白名單不一樣的是,它通過(guò)controller來(lái)控制哪些列是安全的。

其它

23. Rails API

這是一個(gè)專門為了API設(shè)計(jì)的輕量級(jí)rails(類似sinatra?) 
通過(guò)rails-api這個(gè)gem來(lái)安裝。

24. model序列化

ActiveModel::Serializers來(lái)幫助序列(json)化一個(gè)model

25. JBuilder

此JBuilder也非彼JBuilder 
這是一個(gè)json 模板的render。 
此模板以.json.jbuilder結(jié)尾。

26. Sidekiq

異步處理用。 
比DelayedJob和Resque節(jié)省資源。 
而且sidekiq和resque兼容性很好,容易過(guò)度。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)