|
|
|
|
1.2最大の目玉である REST 対応について検証するセッション。まずは Rails1.2 での変更点に関するおさらいから。
| 機能 | 変更点 | 解決策 |
|---|---|---|
| prototype.js | Element.toggle の第二引数の挙動とか | ヘルパを使っていればOK |
| ActionMailer | deliver が smtp になった?(忘れた) | 気をつける |
| deprecated系 | @param, @session | @ は使わない |
| habtm は際どく生き残る | update_with_attribute は deprecated 入り | |
| paginate も生き残り? | will_paginate への乗り換え推奨 (参考3) | |
| foreign_key | class_name 指定時に必須 | 明示する |
| start_form_tag | block推奨に | footerをpartial派は非blockで |
| end_form_tag | 削除 (参考2) | 死亡 |
| GetText | なんかおかしいらしい | 1.9で対応済み |
| multibyte | 外人が考える他国語化 | UTF8以外の混在で死亡 |
| auto loading | 絶対バグってる | これも改悪 |
1.1→1.2の乗り換えでみんな苦労してるようで、だんだんと改悪に対してグチるスレな流れに。auto loading と multibye 対応だけは、本当に改悪だよね。とか言って。
おさらってる間に残り10分。慌てて REST の話に。
元は iBATIS という Java での実装で、それを Ruby へ移植したのが RBatis。ORM の実装らしいので、Rails の AR と何が違うの?競合するの?一緒に使えるの?あたりが気になるところ。その辺をソースを追いながら確認してみようというセッション。
class Product < RBatis::Base
statement :select_one, :find do |productid|
["SELECT * FROM product WHERE productid = ?", productid]
end
end |
| 機能 | AR | RBatis |
|---|---|---|
| 宣言的定義 | 好みで準備 | statement |
| 任意のSELECTクエリ | find_by_sql | statement |
| 任意の生クエリ | execute | statement |
| 複合PK | pluginで対応可能 (参考4) | ○ |
| 非オートナンバーPK | ○ | ○ |
| テーブル非依存のクエリ | Baseクラス | ○ |
| 結果セット属性アクセス | ○ | ○ |
| 結果セット属性の遅延評価 | ? | LazyAssociation |
| 結果セット属性のオブジェクト化 | 結果セット用サブクラス | ○ |
| 結果セット属性へのマスク | 結果セット用サブクラス | ○ |
| カラムマッピング | 結果セット用サブクラス | ResultMap |
| 集約 | aggregation | ResultMap |
iBATIS は多機能で Active Record パターンと比べるとメリットが色々ある。しかし、RailsのARフレームワークは名前こそARであるものの、同パターンは全体の2割程度の機能でしかないと言えるくらいのリッチなフレームワークであるため、iBATIS の恩恵は霞んでしまうようだ。以上より、セッションの結論は、残念ながら「それARで(ry」となってしまった。(※ 遅延評価だけは機能を追いきれていない)
RBatis にガッカリした参加者は、むしろ AR と Hibernate の機能比較にテンションが上がったという。
| PoEAA | AR | Hibernate |
|---|---|---|
| Single Table Inheritance | STI | Subclass |
| Class Table Inheritance | サポートなし | Joined Subclass |
| Concrete Table Inheritance | polymorphic | Union Subclass |
AR にも CTI が欲しいね、熊井ちゃん。
| JRuby | Rails | Berryz | ℃-ute | エッグ | jQuery |
| 前 | 2007年 2月 |
次 | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | |||