Ruby Tips!

RubyのTipsを紹介します

evalでスタックトレースのファイル名と行番号を差し替える

Kernel.#evalModule#module_evalBasicObject#instance_evalでは引数にファイル名と行番号を与えることで、スタックトレースのファイル名と行番号を差し替えることができる。以下は文字列がtest.rbの100行目に書かれているかのようにスタックトレースを表示させる例である。

eval(<<EOS, binding, 'test.rb', 100)
  raise "error"
EOS
filename:100:in `<main>': error (RuntimeError)
	from /tmp/vCWIAge/65:1:in `eval'
	from /tmp/vCWIAge/65:1:in `<main>'