RubyKaigi 2013 で発表しました。
発表中にデモを行った Object#where_are_you_from? をサポートする irb は、次のようなコードになります。
#!/home/ko1/tmp/trunk/bin/ruby # # irb.rb - interactive ruby # $Release Version: 0.9.6 $ # $Revision: 40560 $ # by Keiju ISHITSUKA(keiju@ruby-lang.org) # require "irb" require 'objspace' class Object def where_are_you_from? file = ObjectSpace.allocation_sourcefile(self) return unless file line = ObjectSpace.allocation_sourceline(self) "from #{file}:#{line}" end end ObjectSpace.trace_object_allocations do IRB.start(__FILE__) end
ただし、これらの ObjectSpace のメソッドはあまり議論されないまま私が勝手に導入してしまったので、あとで reject されるような気がします。
まぁ、とりあえず RubyKaigi でデモがしたかったのです(久しぶりに)。私の発表では、ObjectSpace.memsize_of(obj) とか、そういう比較的簡単に作れるけど、ちょっと便利そうなデモをすることが多い気がしますね。
本当はね、GC_START イベントとか使ってヒープの内容を可視化するような gem を作ろうとしたんだけど、外側から(gc.c 弄らないで)使うのが存外にしんどかったので諦めたという...。
多分、頑張れば出来るんですよ。
本を読みながら数段の階段を降りようとしたら、すっころんで足をひねってしまいました。ギブスをはめて、一ヶ月くらい安静にしないといけないみたい。出社しない理由ができた。
観察できたこと。
ええと、何はともあれ、大変助かりました。すごく心強かったです。これからもよろしくお願いします。
ぬおおお大事に&ご用心を..
ぬおおお大事に&ご用心を..