# Is posible to get the Module(s), Class and Method names in which we are?

**URL:** <https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003>\
**Category:** Ruby\
**Created:** [April 6, 2008, 1:16pm UTC](https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003 "2008-04-06T13:16:11Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [April 6, 2008, 1:16pm UTC](https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003/1 "2008-04-06T13:16:11Z")

</div>

Hi, for logging purposes I’d like to print the Modules, Class and Method  
in  
with the logger is called. Imagine this case:

module App  
module TransportLayer  
class Server  
def get\_data()  
…  
…  
logger.info “We are in XXXXXXX”  
end  
end  
end  
end

I’d like to see:  
“We are in App::TransportLayer::Server#get\_data”

Is it possible in anyway? The only I know how to do if getting the  
current  
Class name by doing “self.class.to\_s”.

Thanks a lot.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [April 6, 2008, 2:40pm UTC](https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003/2 "2008-04-06T14:40:41Z")

</div>

El Domingo, 6 de Abril de 2008, IÃ±aki Baz C. escribiÃ³:

> end
> 
> I’d like to see:  
> “We are in App::TransportLayer::Server#get\_data”
> 
> Is it possible in anyway? The only I know how to do if getting the current  
> Class name by doing “self.class.to\_s”.

Ok sorry, I can get the modules and classes via “self.class.to\_s”:  
=\> “App::Transport::Server::TCP”

The only I miss if the method name, is ti possible?

Thanks.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [April 6, 2008, 2:50pm UTC](https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003/3 "2008-04-06T14:50:38Z")

</div>

IÃ±aki Baz C. wrote:

> The only I miss if the method name, is ti possible?

In 1.9 there is Method#name, but in 1.8.6 I think your best bet is to  
parse the output from Kernel#caller.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [April 6, 2008, 3:25pm UTC](https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003/4 "2008-04-06T15:25:54Z")

</div>

El Domingo, 6 de Abril de 2008, Tim H. escribiÃ³:

> IÃ±aki Baz C. wrote:
> 
> > The only I miss if the method name, is ti possible?
> 
> In 1.9 there is Method#name, but in 1.8.6 I think your best bet is to  
> parse the output from Kernel#caller.

Thanks, I’ll try it.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [April 6, 2008, 6:17pm UTC](https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003/5 "2008-04-06T18:17:30Z")

</div>

On Apr 6, 9:25 am, Iñaki Baz C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> El Domingo, 6 de Abril de 2008, Tim H. escribió:
> 
> > Iñaki Baz C. wrote:
> > 
> > > The only I miss if the method name, is ti possible?
> 
> > In 1.9 there is Method#name, but in 1.8.6 I think your best bet is to  
> > parse the output from Kernel#caller.
> 
> Thanks, I’ll try it.

Look at Facets: facets/ruby.rb. There is 1.8 implementation of  
# **method**.

```
# Retreive the current running method name.
#
# def tester; __method__ ; end
# tester #=> :tester
#
# Technically __callee__ should provided alias names,
# where __method__ should not. But we'll have to
# leave that distinction to Ruby 1.9+.

def __method__
  /\`([^\']+)\'/.match(caller(1).first)[1].to_sym
end

```

T.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [April 6, 2008, 7:35pm UTC](https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003/6 "2008-04-06T19:35:43Z")

</div>

On 06.04.2008 14:39, Iñaki Baz C. wrote:

> > end  
> > =\> “App::Transport::Server::TCP”
> 
> The only I miss if the method name, is ti possible?

Yes, from caller().

Kind regards

robert

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [April 7, 2008, 12:42am UTC](https://www.ruby-forum.com/t/is-posible-to-get-the-module-s-class-and-method-names-in-which-we-are/134003/7 "2008-04-07T00:42:37Z")

</div>

El Domingo, 6 de Abril de 2008, Trans  
escribió:\> # **method**.

> ```
> def __method__
> /\`([^\']+)\'/.match(caller(1).first)[1].to_sym
> end
> 
> ```

Thanks 😉
