Rails 3.2 RC1
3.1のリリースから四ヶ月足らず。早くも3.2の足音が聞こえてきたようです。
Faster devとExplain queriesは開発を確実にテンポアップさせてくれそう。
Active Record Storeもいいかも。
Faster dev mode & routing
Railsをdevelopment環境で動かしていると、アクセスするたびにクラスがリロードされる。
3.2では変更した箇所だけリロードされるようになる。
これはかなり快適になりそう。
またルーティングの解析も高速化されるとのこと。
これによって特にlink_to等を大量に含んだページでは高速化が期待できる。
Explain queries
RailsからSQLのExplainを参照できるようになる。
やり方は組み立てたRelationの末尾にexplainをつけるだけ。
User.where(:id => 1).joins(:posts).explain
開発中にインデックスがきちんと使われるかどうかなどのチェックが素早くできて便利。
またスロークエリが発生したときに自動で出力するように設定することもでき、こちらも使い出がありそうだ。
今のところSQLite3、MySQL、PostgreSQLでのみ有効の模様。
Tagged logger
ログにタグを含めて出力できるようになる。
状況によっては便利かも。
Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)) Logger.tagged("BCX") { Logger.info "Stuff" } # Logs "[BCX] Stuff" Logger.tagged("BCX") do Logger.tagged("Jason") do Logger.info "Stuff" # Logs "\[BCX\] \[Jason\] Stuff" end end
Active Record Store
ActiveRecordをシンプルなKey-Valueストアとして使うことができるようになる。
class User < ActiveRecord::Base store :settings, accessors: [ :color, :homepage ] end u = User.new(color: 'black', homepage: '37signals.com') u.color # Accessor stored attribute u.settings[:country] = 'Denmark' # Any attribute, even if not specified with an accessor
詳しく見てないけどusersテーブルのsettingというカラムにいろいろ保存する感じ?
これは興味深い。