From: Robert Klemme Date: 2005-12-07T01:07:34+09:00 Subject: Re: How can I find __LINE__ on the execution stack ? Christer Nilsson wrote: > bob.news wrote: > >> You can use caller[0] to get the info you want: >> >> irb(main):007:0> def test >> irb(main):008:1> p caller[0] >> irb(main):009:1> end >> => nil >> irb(main):010:0> test >> "(irb):10:in `irb_binding'" >> => nil >> >> Kind regards >> >> robert > > Thank you Robert! You're welcome. > def assert(expect, actual, *msg) > expect==actual ? print(".") : print("\nAssert failed: > #{expect.inspect} <> #{actual.inspect} in line > #{caller[0].split('\\').last} #{msg}\n") > end Btw, one way to make your assertion code maybe a bit more runtime savvy would be to use blocks: if do_test? def assert() raise AssertionError unless yield end else def assert() end end assert { foo > 10 } IIRC there is already an assert method that works exactly this way. Kind regards robert