From: "Iñaki Baz Castillo" Date: 2009-03-31T07:26:32+09:00 Subject: Re: Getting the current module(s), class name and method in Ruby 1.9 El Martes 31 Marzo 2009, Sean O'Halpin escribió: > On Mon, Mar 30, 2009 at 10:32 PM, Iñaki Baz Castillo wrote: > > Hi, first of all I'm sorry since I already did this question some time > > ago (but I ca't find it now). > > > > Basically I want the following: > > > > --------------- > > module MyModule > > > > class MyClass > > def show_log > > puts "I'm here: ###### FIXME ######" > > end > > end > > > > end > > > > > > my_class = MyModule::MyClass.new > > my_class.show_log > > => I'm here: MyModule::MyClass#show_log > > --------------- > > > > When I did this question I remember that it was not possible with Ruby > > 1.8 but it was feasible in Ruby 1.9. > > > > Could you please show me how to get it? > > Thanks a lot. > > Hi, > > The following works in both 1.8.6 and 1.9.1 (calling_method is by > Robert Klemme - see ruby-talk 205150 & 205950). > > module Kernel > private > def calling_method(level = 1) > caller[level] =~ /`([^']*)'/ and $1 > end > > def this_method > calling_method > end > end > > module MyModule > class MyClass > def show_log > puts "#{self.class}.#{this_method}" > end > end > end > > MyModule::MyClass.new.show_log # => MyModule::MyClass.show_log Fantastic! Thanks a lot. -- Iñaki Baz Castillo