From: Sean O'Halpin Date: 2009-03-31T07:07:19+09:00 Subject: Re: Getting the current module(s), class name and method in Ruby 1.9 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 Regards, Sean