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というカラムにいろいろ保存する感じ?
これは興味深い。

前の記事

リファクタリングのいつ