哇嗚~又要學新東西了嗎? XDrz
今天 RoR 官方宣佈了 Rails 2.0 Preview Release 的消息。不過同時也公告了,在 2.0 正式版本釋出前,會先釋出 Rails 1.2.4 版來修正一些 Rails 1.2 版的 bug 及過時用法的警告。
至於 Rails 2.0 加入了什麼新東西呢?
-
Resource
- 新的 REST URL: 比方說
/people/1;edit變成/people/1/edit。 - 在 route 中增加 namespace 的支援,引用官方的例子:
map.namespace(:admin) do |admin| admin.resources :products, :collection => { :inventory => :get }, :member => { :duplicate => :post }, :has_many => [ :tags, :images, :variants ] end
- resource-based controller,幫助你在設定 REST route 時,可以像 ActiveRecord 那樣建立關係,比方說:
# /avatars/45 => AvatarsController#show map.resources :avatars # /people/5/avatar => AvatarsController#show map.resources :people, :has_one => :avatar
- 新的 REST URL: 比方說
-
Multiview
在 actionview 的部份導入更多的 template,以區別不同的格式,格式長成這樣:
action.format.builder,以下是幾個例子:- xxx.html.erb: 就像過去的
rhtml,表示格式是 HTML,而 rendering engine 是 ERb。 - xxx.atom.builder: 主要用來產生一個 mime type 為 application/atom+xml 的輸出。
而且你可以自己設計自己的 mime_type (原文中教了如何設計 for iPhone 的格式)及 template。
- xxx.html.erb: 就像過去的
-
利用 Record 的 identification 來產生 URL。
比方說你可以直接使用:
p = Person.find_by_name('ericsk') link_to p.name, p
這樣的方式來產生 URL 指到這筆 record
-
更多 HTTP 支援
其中包括了 HTTP Authentication、cache 多個 JavaScript, stylesheet 檔案,以及讓 browser 同時開啟多個 HTTP request 以增加讀取資料(如圖片)的速度。
-
Security
內建處理 CRSF attack 的機制,以及改寫了 TextHelper#sanitize method(從黑名單轉為白名單)。另外就是只支援 HTTP cookies,表示你別想再用 document.cookie 拿到東西了 :p
-
例外處理
過去處理例外情況只能用 begin … rescue … end 來作,現在可以把處理的動作寫成 method,然後在 controller 加上
rescue_from :method關鍵字來處理,例如:class PostsController < ApplicationController rescue_from User::NotAuthorized, :with => :deny_access protected def deny_access ... end end
-
ATOM helper
-
Query cache for ActiveRecord
-
Migration 的新寫法
直接看官方的例子,原本是寫成這樣:
create_table :people do |t| t.column, "account_id", :integer t.column, "first_name", :string, :null => false t.column, "last_name", :string, :null => false t.column, "description", :text t.column, "created_at", :datetime t.column, "updated_at", :datetime end
現在可以寫成:
create_table :people do |t| t.integer :account_id t.string :first_name, :last_name, :null => false t.text :description t.timestamps end
-
XML in, JSON out
ActiveRecord 現在可以利用
from_xml來讀取輸入的資料,而且可以用to_json來輸出 JSON 格式的資料。 -
整理過的 ActiveRecord
一堆
acts_as_XXX全部移到 plugin 去了(不再內建),然後預設的 adapter 只留下 MySQL、SQLite 及 PostgreSQL,要其它 DBMS 的 adapter 可以去 GEMS 裡找找看有沒有
,而自己的設定都放在activerecord-XYZ-adapter</codE>。</li> <li><h5>拿掉 :with_scope</h5></li> <li><h5>ActionWebservice out, ActiveResource in</h5></li> <li><h5>ActiveSupport</h5> 加作 Array#rand 及 Hash#except</li> <li><h5>Action Mailer </h5></li> <li><h5>Rails debugger</h5></li> <li><h5>切割設定檔</h5> 預設的設定值留在 <code>config/environment.rbconfig/initializers下的inflections.rb及mime_types.rb -
可以設定 plugin 載入的順序
- code 的改進
依照 David 的建議,如果你的 rails app 在 Rails 1.2.3 (Rails 1.2.4 會有更多的 deprecation waring) 的環境中沒有任何的 waring,同時也願意移植到 Rails 2.0 環境的話,是可以考慮「升級」,直接利用:
# gem install rails –source http://gems.rubyonrails.org
就可以安裝 preview release 了。
準備要踏入 RoR 界的朋友,可以考慮一下準備直接學習 Rails 2.0 了~
歷史上的今天
- Xming: Windows 上的 X Server - 2006
- Google Page Rank 要更新了! - 2006
文章分類:
標籤:


2007/10/15 10:31 am
Rails 2.0的Migration令人亮眼
這也是我最愛Rails 2.0的地方
不過,新的Migration表面上看起來還是有個缺點
我不知道DHH有沒有考慮到這樣
我直接列個例子
t.string :first_name, :last_name, :null => false
如果我first_name限制10,last_name限制20
我就得拆開了…
所以我是想說
:limit => [:first_name => 10, :last_name => 20]
或許這是個方式
其他像是:default也能適用
但是我不知道新的Migration是不是可以這樣玩
2007/10/15 12:02 pm
@CFC
就算不能這樣玩,你也可以手動去改 migration 的 code 讓它可以 :P
2007/10/15 2:20 pm
[quote comment=""]@CFC
就算不能這樣玩,你也可以手動去改 migration 的 code 讓它可以 :P[/quote]
yeah
有這打算
不過#rubyonrails的人跟我說 不要這樣作會比較好lol
反正等Rails 2.0 stable release後
我再來自己玩玩吧