From: Ralph Shnelvar Date: 2010-09-04T13:09:10+09:00 Subject: Re: Getting name of current method ------------CA3A261797E2D1 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Ryan, Friday, September 3, 2010, 6:50:53 PM, you wrote: RD> On Sep 3, 2010, at 17:44 , Ralph Shnelvar wrote: >> Ruby has __FILE__ and __LINE__ to give the file and line omber where we are currently at in the code. >> Consider >> Class X >> def my_method >> m = ??? # I want m to be assigned "my_method" >> end >> end >> How can I get m set properly? >> I guess I could use define_method to define my_method and then pass the name into the function .. but that is so ugly and also flattens scope that I may not want flattened. RD> `ri Kernel.caller` Thanks for pointing that out. Interesting and useful. I have come up with two alternate methods and I'd like to ask the help of all those here to help me modify the first method so that it does what I want - - - - class X @m = "method_1" @s = <<-XXX def #{@m} puts "In #{@m}" end XXX puts "#{__FILE__} @ #{__LINE__}" puts @s eval @s m = "method_2" eval("def #{m}; puts \"In #{m}\"; end") end x = X.new x.method_1 x.method_2 - - -- - The code, above, works fine in 1.8.6 Note that I have to define @m before @s. How can I set things up so that I can define @m after @s so that I can modify @m and get a new function? ------------CA3A261797E2D1--