メタプログラミング Ruby 2日目 間違い箇所?

久しぶりのエントリ.
最近はRubyの魔術書「メタプログラミングRuby」をじっくりと楽しんでます.
プログラミング言語の本にしては平易に書かれていてとても読みやすい文章ですよ!

メタプログラミングRuby

メタプログラミングRuby

一通りじっくり読み終わったので、
実際にコードを書いていたところ、2日目のブランクスレートのところでwarning発生.

バージョンは

ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-darwin9.8.0]

で試しています.

methods/computer/blank.rb

class Computer
  instance_methods.each do |m|
    undef_method m unless m.to_s =~ /^__|method_missing|respond_to?/
  end
  ....
warning: undefining `object_id' may cause serious problems

http://markmail.org/message/ulp4xdsfgqledfj7#query:undefining%20%60object_id%27%20may%20cause%20serious%20problems+page:1+mid:zbpgv4wssbzd7aim+state:results


なんて記事*1があるので、
1.9.2では出てくるwarningなんでしょうね*2

とりあえず下のようにobject_idもundef_methodの対象外としてwarningを回避しておきました.
正規表現部分が長いのでmatcherを切り出した方が良さげ.

class Computer
  instance_methods.each do |m|
    undef_method m unless m.to_s =~ /^__|object_id|method_missing|respond_to?/
  end

*1:Mark Mailが個人的に見やすくて好き

*2:確かなソースが欲しいっ