おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Rails2.3新機能メモ

下記の文章はRiding Rails: This Week in Edge Railsをざっくり翻訳したメモです。かなり適当に訳しているので間違え等あればご指摘お願いします><

Rack integration

script/serverがrackを通すようになって、rackで使えるサーバを使えるようになる。扱えるサーバの種類が増える。

Efficient routes

  • ルーティングを自動生成したときにできるformatted_xxxのルーティングが :formatオプションを明示的に使ったときのみ設定されるように変更になる。これによりrouteの自動生成量が50%減。formatted_xxxはdeprecatedになる(一応まだ使えるみたい)
  • routes.rb以外でもroute設定ができるように。RouteSet#add_configuration_fileを使うとどこでもルーティングの設定ができる。

Better support for engine plugins

いまいちよくわからなかった

Sensible backtraces for your tests

などを使ってbacktraceの任意の行を消せるようになるらしい。個人的には使いどころがよくわからない機能

Ruby1.9 integration

Ruby1.9対応に向けて頑張ってるよという話

Faster boot time in development mode with lazy loading/autoload

ActiveSupport等のフレームワークを、本当に必要なときだけメモリ上にロードするように変更することでメモリ使用量を減らし、Railsのパフォーマンスを良くする機能改善。

Misc

  • preload_frameworksオプションを使うと、コアライブラリをすべてスタートアップ時にロードする。デフォルトはfalseでそれぞれ一つずつロードしていく方式だが、PassengerやJRubyなどには必要な機能。
  • asset hosts(imageやcssなどの静的ファイルを置いておくホスト)をオブジェクトのように扱えるようになるらしい。
  • ヘルパーのディレクトリをActionController::Base.helpers_dirで指定できるようになる。
  • CSRF用のトークン生成が簡単になる。ActiveSupport::SecureRandomを使ってランダムな文字列を生成するようになり、protect_from_forgeryの:digestや:secretオプションはdeprecatedになって効果がなくなる。
  • 秘密の情報を簡単に暗号化するのにActiveSupport::MessageEncryptorが使えるようになる。
  • from_xmlはXmlSimple依存でなくなって、代わりに独自のXmlMiniというものになる。
  • rake rails:update:application_controllerで、application.rbをapplication_controller.rbにリネームできるようになる。rake rails:updateにもこの機能は含まれる。
  • ActiveSupport::OrderdHashがeach_keyとeach_valueを提供するようになる
  • I18nの翻訳設定ファイルにstorage_units:[Bytes, KB, MB, GB, TB]が追加
  • "a shining example of what happens when eagerness overtakes prudence"とかいうコンポーネントのサポートが終わるらしい?
  • /public配下のCGIFCGIのディスパッチファイルがデフォルトでは生成されなくなる。--with-dispatchesをrailsコマンドのオプションとしてつけるか、rake rails:generate_dispatchersすれば生成される。
  • 今週のedgeの変更は136コミット