僕の最近のコードはRSpecからの影響が強かったのだけれど、今日そのRSpecに良く分からない変更があった。
removed all instances of class << self
removed all instances of class << self · 9e2eb70 · dchelimsky/rspec · GitHub
今までは特異メソッドをclass << self 〜 endで定義していたのに、それをすべて違う方法に変更したのだ。
基本的にはdef self.foo; endになっていて、一カ所だけextend ClassMethodsになっている。
これの理由が良く分からない。
あと、同時にmetaclassメソッドが削除されていて、テストの中で
(class << LiarLiarPantsOnFire; self; end).instance_methods.should_not include("something")
となっていて吹いた。
これは他にmetaclassを使っているところが無いみたいだから仕方ないけど。