クラスの比較

Rubyのcase文は対象の比較に === メソッドを使ってくれてとても便利。

some_instance = BarClass.new
case some_instance
when FooClass
  print 'foo!'
when BarClass
  print 'bar!'
else
  print 'other'
end

とかすると some_instance が属するクラスに応じて処理を分けてくれるわけ。
でもまぁ当たり前なんだけど、このおかげで以下のコードは期待通り動いてくれない。

some_class = BarClass
case some_class
when FooClass
  print 'foo!'
when BarClass
  print 'bar!'
else
  print 'other'
end

BarClassはClassクラスに属するので else が実行されちゃう。

一瞬はまった。