数日前、 Ruby on RailsチームはRuby用で、最も人気のあるwebフレームワークの バージョン3.1をリリースした。前回のメジャーリリースである Rails 3.0からちょうど1年後のリリースである。以下が本リリースの著しいフィーチャである。
- アセット パイプライン
- ストリーミング
- 可逆なマイグレーション
- jQueryが既定のJavaScriptライブラリになった
アセットパイプラインがRailsの主要な変更である。どのように使い、何をするものかを記述した 完全なガイド がある。
アセットパイプラインは、 JavaScript と CSSアセットを繋いだり、縮小すなわち圧縮するフレームワークを提供する。これらのアセットを CoffeeScript, Sass、ERBのような他の言語で書く機能も持っている。
アセットパイプラインは、David Heinemeier Hansson氏のRailsConf talkの話題でもあった。
ストリーミング の意味は、Railsが chunked transfer encodingとしても知られているHTTPストリーミングをサポートするようになったことである。ストリーミングの利点は、webサーバーがレスポンスを完全に生成する前に、レスポンスの転送を開始できることである。Railsチームは、ブログで ストリーミングの利点を説明している。
ストリーミングは、待ち時間や動的に生成するのに必要な時間を短くするものではない。しかし、全レスポンスが生成されるのを待たずに、アプリケーションは直ちにコンテンツを送るので、クライアントは、より早くアセットをリクエストできる。特に、サーバーがコンテンツを生成している間に、もしHTMLドキュメントのヘッドをフラッシュすれば、CSSとJavaScriptファイルは、並行して取得できる。その結果、ページはもっと速くロードできる。
またRailsアプリケーションの ストリーミングをどのように設定するかを説明しているRailscast もある。
Railsはまた、長期にわたって ダウン マイグレーションをサポートしているので、なぜ 可逆な マイグレーション が新規と言える程のことなのか? これまで、ダウン・マイグレーションを自分で書かなくてはならなかったが、 今回のRails 3.1は、これをやってくれる。Rohit Arondekar氏がこの魔法がどう働くのかを説明している。
基本的に、もし自分のマイグレーションでchange メソッドを定義し(以前のupメソッドやdownメソッドの代わりに)、マイグレーションを適用すると、コマンドが普通に実行される。しかしマイグレーションを逆にしている間、コマンドはレコードされ、逆コマンドのリストが生成され、走る。逆コマンドは、単に、元のコマンドの反対を実行するコマンドである。
これは、Rails 3.1における変更の一部に過ぎず、詳しいリリースのノートにもっと多くのことが載っているのがわかる。例えば、SSLを強制する ための設定オプションが導入されている。自分のプラグインが既に3.1で動くか確認したければ、railsplugins.org をチェックして、自分も貢献すればいい。
自分のアプリケーションをアップグレードする計画はありますか? Austin Hughey氏は、The H上の記事でアドバイスしている。