论坛首页 编程语言技术论坛

<轉>Rails3 RC 發佈: 重點導覽

浏览 3459 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-08-17   最后修改:2010-08-17

考慮到有的人可能沒訂閱ihower的Blog,因此轉載了下這篇RC版的重點導航...下面有原文地址...要關注rails的可以訂閱該Blog...另外,想看看各位大神的新討論...-->

 

轉自:http://ihower.tw/blog/archives/4590

 

 

RailsConf 結束之後就嚷嚷要發佈的 Rails 3 Release Candidate 候選版本終於出了(好吧,是三個禮拜前的事情了,這篇拖稿了 XD),如果你還沒進場,又是一個好時機。從我上次(疑,竟然是半年前了!!)整理 Rails3 Beta 發佈: 重點導覽 以來,又有了一些不錯的文件,經過筆者過濾挑選,重新整理 Rails3 的八大重點:

1. Bundler
2. ActiveRecord 的新 Query API
3. ActiveRecord 的新 Validation API
4. Views: XSS, Block Helper, UJS
5. I18n
6. Routing API
7. ActionMailer
8. Metal

如果喜歡看 screencast,官方也錄了 http://rubyonrails.org/screencasts/rails3

安裝

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

升級到 ruby 1.8.7 或 1.9.2,以及 rubygems 要 1.3.6 以上

 

gem install rails --pre
gem install mysql2 # 開始改用 mysql2 gem 吧,這一套修正了 multithreaded 及 Ruby 1.9 的 Encoding 問題
 

 

升級

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如果是升級,重點 Bundler 和 Views 部分必須先搞懂,不然完全動不了。其他 API 變更的部份(Routing, ActiveRecord, ActionMailer) 在 Rails 3.1 之前暫時是可以 works。當然有空還是趕快研究一下囉。以下是兩篇有關升級的新文章:

* Upgrading a Rails 2 App to Rails 3
* The Road to Rails 3: make your Rails 2.3 project more Rails 3 oriented

Rails 本身升級是沒有問題,怕的是周邊的 Plugin 沒能跟上。http://railsplugins.org 有整理一些,可以找找 github 上有沒有 branch,而 Rails3 透過 Bundle 安裝還蠻方便的。

1. Bundler

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

* Bundler: Rails3 用來管理 Gem dependencies 的神器

2. ActiveRecord Query Interface

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Rails2 的 finders, named_scope, with_scope 等用法,在 Rails3 統一為一種 Relation 用法,可以更容易做 composable(chainable)、Decoupled from SQL 以及 Lazy Loading。另外如果是有傳參數的 scope,也偏好定義成 class method,而不是 scope + lambda 了。以下是一些不錯的文章:

* Active Record Query Interface 3.0 基本用法介紹
* ActiveRelation: ActiveRecord Gets a Facelift 基本用法介紹
* Active Record Queries in Rails 3 基本用法介紹
* Advanced Queries in Rails 3 進階用法介紹
* The Skinny on Scopes (Formerly named_scope) 進階用法介紹,跨 Model 的 Scope 太厲害了。
* New Active Record scoping syntax 如果你在 Rails2 有使用 with_scope 或 with_exclusive_scope( :find => x, :create => y ) 請讀這篇。新的 Rails3 建議你改用 scoping, unscoped, create_with 等新用法,因為舊的用法行為有差異。

3. ActiveRecord Validation

* AR Validation 提供了新的 API 只要一行就可以整合同一個屬性的多個驗證,可以減少行數。
* 可以客製 EachValidator 整合進上述的新 API 之中
* 可以客製 Validator 包裝一大堆 validations,例如 validates_with ReallyComplexValidator
* save(false) 終於拿掉了,要跳過驗證儲存請 save(:validate => false)

* Validations in Rails 3
* Improved validations in Rails 3
* validates :rails_3, :awesome => true
* Independent Model Validators

另外就是驗證錯誤的 API 也改了:

* Errors#on 跟 on_base 拿掉了,請改用 Errors#[]
* Errors#add_to_base(msg) 拿掉了,請改用 Errors#[:base] << msg
* Views 裡面常用的 error_messages_for 跟 error_message_on Helper 被拿掉了,請自己寫過(你可以參考 scafffold 產生出來的程式)或裝回 legacy plugin

4. View

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

* Rails3 如何換使用 jQuery
* Unobtrusive JavaScript in Rails 3
* Rails3 如何寫 Helper 可以傳 Block 參數
* Rails3 處理 XSS: Secure by Default: Rails 3 Security Strategy,HTML 預設都會逸出了,不要逸出請用 raw Helper 或字串的 html_safe! 方法。

5. I18n

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

* 詞彙檔中的變數替換由 {{}} 變成 %{} 了。這有點惱人,我還碰到 redmine 的問題(redmine 使用 Rails2,但是卻因為裝了 Rails3 所以 i18n 也升級到 0.4.1 版本就爆炸了)
* 提供更多 backends,例如 ActiveRecord
* 加速功能!! Run, I18n, run!

6. Routing

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

* Rails3 重點導覽:新的 Routes
* The Lowdown on Routes in Rails 3 很詳盡的用法介紹
* The Powerful New Rails Router 進階用法
* Rack in Rails 3 結合 Rack 端點的應用

7. ActionMailer

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

底層由 TMail 換 Mail gem, 一整個砍掉重練 API 大改。原本動態的 Notifiter.deliver_welcome_email 寫法變成 Notifiter.welcome_email.deliver,其中的 Notifiter.welcome_email 是一個 Mail::Message 物件。

* A Whole New ActionMailer
* Action Mailer in Rails 3
* 一個範例
* Inline Attachments for ActionMailer

8. Metal

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

* Rails3: 新的 Metal 機制

   发表时间:2010-08-17  
真想骂人,每次升级伤筋动骨。。。。。
0 请登录后投票
   发表时间:2010-08-17  
ray_linn 写道
真想骂人,每次升级伤筋动骨。。。。。

等他们折腾完了再升
0 请登录后投票
   发表时间:2010-08-18  
才 RC ,肯定折腾。 等正式版本之后,就会有一键升级脚本出来了。
0 请登录后投票
   发表时间:2010-08-18  
说句实话,要是ASP.NET MVC有个类似active record的东东(castle是个半辣子),我就抛弃rails....
0 请登录后投票
   发表时间:2010-08-18  
ray_linn 写道
说句实话,要是ASP.NET MVC有个类似active record的东东(castle是个半辣子),我就抛弃rails....

sinatra+sequel+jQuery,给你抛弃rails的理由
0 请登录后投票
   发表时间:2010-09-07  
改动太大了,历时2周,到现在除了自己带的sqlite3可以在window下面跑,其它的驱动都没出来,满心欢喜的装上了mongodb(这是唯一安装不抱错的数据库gem),结果rake gems:install ,error告诉我,请安装于之匹配的版本,打开一看还是1.8.7,历史告诉我们Rails是玩具,你要想工业化,等于你用C/C++写CGI.
珍惜生命,工业化Web生产还是用别的比如aspx,虽然我不喜欢,但稳定压倒一切,你不要给我说JAVA的网页开发。JAVA敏捷一点都不敏捷。
0 请登录后投票
   发表时间:2010-09-07  
楼上把“工业化Web生产”改为“windows上的工业化Web生产”才合情合理。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics