Ruby on RailsチームはRailsの最新バージョン、バージョン2.3.2をリリースした。Rails 2.2がリリースされた数カ月後、Rails 2.3.2はリリースされ、すべてのRailsデベロッパにとって興味深い重大な変更を多く提供する。
これまでのリリースと比較すると、このリリースは変更点が最大になりそうである。アップデートの完全なリストについては、Rails 2.3 Release Notes(リンク)を参照のこと。インストールは、以下により完了する。
gem install rails
リリースノートは、Rails 2.3.2を表す。
Ruby 1.8であろうが、現在リリースされているRuby 1.9.1で実行していようが、Rails 2.3は、その独自のテストすべてをパスしなければならない。
アプリケーションのアーキテクチャ
Rackのサポート
WebサーバおよびWebフレームワーク向けの標準APIを取得するために、RailsはRackサポートを受ける。
スクリプト/サーバの実証は簡易化され、若干書き換えられている。かつてスクリプト/サーバにあった、サポートされているサーバの明確なリストはなくなっ た。その代わり、RailsはRack(リンク)のインストールに依存しており、スクリプト/サーバはこれを踏む(リンク) - つまりRailsはRackがサポートするあらゆるサーバをサポートする。
Railsのエンジン
しばらくアップグレードがなかったものである。別のRailsアプリケーションにRailsアプリケーションの埋め込みを可能にする。
Railsのドキュメンテーション
通常ドキュメンテーションは、製品リリースの機能としてみなされないが、Railsのこのリリースは、Railsデベロッパに利用可能なドキュメンテー ションのアスペクトに対する重大なアップデートが一緒になっている。。ドキュメンテーションは、通常多くのオープンソースプロジェクトの最大の強みか弱みであるが、チームはデベロッパ向けのドキュメンテーションの作成において大きな一歩を踏み出した。
Railsドキュメンテーションに対する多くの変更やアップデートまたコミュニケーションが、コアチームや新たに誕生したRails Activist(リンク)によってもたらされていることを、言及するのは重要である。
RDoc
- 構文の質問に対し、即座にヘルプを提供する。
- 実際のコアデベロッパによって維持され、通常は最新の状態である。
Railsのガイド
- 特定の問題のあるドメイン http://guides.rubyonrails.org/ に対して、「ハウツー」のヘルプを集中的に提供する。
- 場合によりRailsの経験がある、中レベルのデベロッパを対象にする。
- 既存の高品質な資料を大量に備えている。
- 継続的に訂正されており、edge Railsにおける変更をトラックする。
- バージョンに固有のチュートリアルコードサンプルを組み込むことができる。
- 新たなデベロッパ向けに「即座に利用できるガイダンス」を提供するためのコアRailsの一部として、提供可能。
Railsのブック
- レベルの高いアーキテクチャのガイダンスおよび構成の概要を提供する。
- 「Rails Ways」の考え方を掘り下げて、フレームワークが機能する仕組みを読者が理解できるようにする。
- Railsに馴染みのないデベロッパや「木」から「森」の見方へとシフトしたいデベロッパを対象とする。
- Railsの概念化およびRails 3 タイムフレームで代わりとなるモジュール(ORM、ルーティングDSLなど)を選択する際に役立つ。
- 同時翻訳でMerbエクスペリエンスに描画、および多くのライターからの寄稿を取り込み可能
- ほとんどバージョンに依存していない
- スタンドアロンガイドがおこなわない方法で、エンドツーエンドドキュメンテーションを通じ、構造化パスを提供する。
Rails Wiki
- 新たなソフトウェアや質問に迅速に対応することができる、コミュニティ主導のドキュメンテーション
- 外部情報に対するリンクへの良いリポジトリ
- 潜在的に、基礎をなすソフトウェアにおけるRails自体に対する見本
- コミュニティで蓄積された知識やあまり必要とされない情報を保管しておくための場所
Active Recordのアップデート
ネステッドトランザクションの導入を含む、多くのActive Recordのアップデートがこのリリースにはある。
- ネステッド属性
- ネステッドトランザクション
- 動的スコープ
- デフォルトスコープ
- バッチ処理
- コールバックに対する複数の条件
- havingでの検索
- MySQL Connectionの再接続
アクションコントローラの変更
- 統一レンダリング
- アプリケーションコントローラの改名
- HTTP Digest認証サポート
- さらに効率的なルーティング
- RackベースのLazy-loadedセッション
- MIMEタイプの取り扱いの変更
respond_to
の最適化- 改善されたキャッシングパフォーマンス
- ローカライズされたビュー
- 翻訳のための部分的なスコープ
アクションビューの変更
- ネステッドオブジェクトの形式
- パーシャルのスマートなレンダリング
- 日付選択ヘルパーに対するプロンプト
- AssetTag Timestampキャッシング
- オブジェクトとしてのアセットホスト
grouped_options_for_select
ヘルパーメソッド- 形式選択ヘルパーでオプションタグの無効化
Active Supportの変更
Active Support には、新たなObject#tryを含む、素晴らしい変更がある。
- Object#try
- Object#tapバックポート
- XMLmini向け交換可能なパーサー
- TimeWithZoneのわずかな秒
- JSONの主要なQuoting
Railsであること
Railsに対するさらに興味深いアップデートは、このセクションにある。
- Rails Metal
Rails Metalは、Railsアプリケーションの内部に超高速のエンドポイントを提供する新しいメカニズムである。Metalクラスはルーティングおよびアク ションコントローラを迂回して、理論速度を提供する(当然アクションコントローラにあるあらゆるものを犠牲にする)。これにより、最近の基本となる作業を すべてビルドし、公開されたミドルウェアスタックで、RailsをRackアプリケーションにする。Metalエンドポイントは、アプリケーションまたは プラグインからロード可能である。
詳しい説明は以下のとおりである。
- アプリケーションのテンプレート
Rails 2.3は、Jeremy McAnally氏 のアプリケーションジェネレータを統合する。これが意味するのは、Railsにビルドされるテンプレートベースのアプリケーション生成があるということで ある。つまり、すべてのアプリケーションに組み込む一連のプラグインがあれば、テンプレートを一度設定して、Railsコマンドを実行するとき、それを何 度も繰り返して使用することができる。既存のアプリケーションにテンプレートを適用するというRakeの作業もある。
rake rails:template LOCATION=~/template.rb
これは、、プロジェクトにすでにあるあらゆるコードの上にテンプレートの変更を重ねる。
- より静かなバックトレース
- Lazy Loading/Autoloadを使用した、開発モードでのより高速な起動
- rake gemタスクの書き換え
このリリースの完全な詳細については、Rails 2.3 Release Notes(リンク)を参照のこと。アップグレードアプリケーションを多少スムーズにするために、見直しが必要な廃止予定のものがかなりある。