# Self.method?

**URL:** <https://www.ruby-forum.com/t/self-method/69345>\
**Category:** Ruby\
**Created:** [September 20, 2006, 1:06pm UTC](https://www.ruby-forum.com/t/self-method/69345 "2006-09-20T13:06:27Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![aidy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/eada6e/32.png) [@aidy](https://www.ruby-forum.com/u/aidy)\
**Post date:** [September 20, 2006, 1:06pm UTC](https://www.ruby-forum.com/t/self-method/69345/1 "2006-09-20T13:06:27Z")

</div>

Hi,

We can write “self.class” to get the current object, but is it possible  
to do something like a “self.method” to retrieve the currently running  
method?

Cheers

Aidy

---

<div class="post-metadata">

**Author:** ![aidy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/eada6e/32.png) [@aidy](https://www.ruby-forum.com/u/aidy)\
**Post date:** [September 20, 2006, 2:20pm UTC](https://www.ruby-forum.com/t/self-method/69345/2 "2006-09-20T14:20:37Z")

</div>

aidy wrote:

> We can write “self.class” to get the current object, but is it possible  
> to do something like a “self.method” to retrieve the currently running  
> method?

Hi Aidy,

In short, no it is not possible (in an easy way) – but just wait, and  
someone smarter than me will prove me wrong. 😉 See also Kernel#caller  
[1]

[1] [module Kernel - RDoc Documentation](http://ruby-doc.org/core/classes/Kernel.html#M001968)

Regards,  
Jordan

---

<div class="post-metadata">

**Author:** ![aidy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/eada6e/32.png) [@aidy](https://www.ruby-forum.com/u/aidy)\
**Post date:** [September 20, 2006, 3:12pm UTC](https://www.ruby-forum.com/t/self-method/69345/3 "2006-09-20T15:12:45Z")

</div>

Hello !

> In short, no it is not possible (in an easy way) – but just wait, and  
> someone smarter than me will prove me wrong. 😉 See also Kernel#caller  
> [1]

Based on that, you could try something as follows:

def who\_am\_i?  
return caller[0]  
end

def meth  
p who\_am\_i?  
end

meth

As it returns text, you’ll need some regular expression handling, but  
that could help you…

```
Vince, in a ruby mood today...
```

---

<div class="post-metadata">

**Author:** ![aidy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/eada6e/32.png) [@aidy](https://www.ruby-forum.com/u/aidy)\
**Post date:** [September 20, 2006, 3:16pm UTC](https://www.ruby-forum.com/t/self-method/69345/4 "2006-09-20T15:16:45Z")

</div>

On 9/20/06, MonkeeSage [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> [1]
> 
> [1] [module Kernel - RDoc Documentation](http://ruby-doc.org/core/classes/Kernel.html#M001968)
> 
> Regards,  
> Jordan
> 
> This thread may be of some help.

[http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/205118](http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/205118)

Michael G.

---

<div class="post-metadata">

**Author:** ![aidy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/eada6e/32.png) [@aidy](https://www.ruby-forum.com/u/aidy)\
**Post date:** [September 20, 2006, 3:52pm UTC](https://www.ruby-forum.com/t/self-method/69345/5 "2006-09-20T15:52:50Z")

</div>

> 

Thank you, that certainly works

aidy

---

<div class="post-metadata">

**Author:** ![aidy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/eada6e/32.png) [@aidy](https://www.ruby-forum.com/u/aidy)\
**Post date:** [September 20, 2006, 3:56pm UTC](https://www.ruby-forum.com/t/self-method/69345/6 "2006-09-20T15:56:50Z")

</div>

On 20.09.2006 15:48, aidy wrote:

> Thank you, that certainly works

You can also do that without a helper method:

def meth  
p caller(0)[0]  
end

Note: default argument for caller is 1, which makes it start one level  
above.

Kind regards

```
robert
```

---

<div class="post-metadata">

**Author:** ![aidy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/eada6e/32.png) [@aidy](https://www.ruby-forum.com/u/aidy)\
**Post date:** [September 20, 2006, 4:00pm UTC](https://www.ruby-forum.com/t/self-method/69345/7 "2006-09-20T16:00:51Z")

</div>

Vincent F. wrote:

> meth
> 
> As it returns text, you’ll need some regular expression handling, but  
> that could help you…
> 
> Vince, in a ruby mood today…

See! I told you that someone smarter than me would come up with a  
solution! Never say never unless you want to be proven wrong rather  
quickly! 😉

Using Vince’s idea:

def who\_am\_i?  
caller[0].match(/`([^’]+)’/)[1]  
end

def meth  
p who\_am\_i?  
end

meth # =\> “meth”

🙂

Regards,  
Jordan
