Invoking methods


#1

hi everyone,

i got a simple question that’s bothering me all day:
is it possible to find out which method and controller did the
original call?

to make this a little clearer, I want to do the following:
(let’s say these two methods are in different controllers)

def first_method
say_my_name
end

def say_my_name

how do i get the original method and controller

invoking_method = ?

invoking_controller =?

puts invoking_method
puts invoking_controller
end

any help is appreciated!


#2

On 14 Nov 2008, at 10:57, MaD wrote:

hi everyone,

i got a simple question that’s bothering me all day:
is it possible to find out which method and controller did the
original call?

You can screw around with caller but that’s not a very clean way to go
about things.

Fred


#3

thanks!

i just needed it for some log-entries anyway. so there is no need to
find a cleaner way.

On 14 Nov., 12:08, Frederick C. removed_email_address@domain.invalid


#4

As the OP was speaking of controllers: yes, you can. Check
controller_name and action_name.

But then:

to make this a little clearer, I want to do the following:
(let’s say these two methods are in different controllers)

I see no way to have one controller calling instance methods on
another controller. You could achieve this with components, but as the
Rails docs state: you shouldn’t.

/eno

====================================================================
A wee piece of ruby every monday: http://1rad.wordpress.com/


#5

actually, never mind.

in my initializer

self.controller_name
self.action_name

still return the names of my calling controller and action. guess that
was just too easy to do in the first place.


#6

yes you are right. my example was wrong.
actually the second method ain’t in an controller, but in an
initializer. and what i really wanted to do is log the calling
controller_name and method_name. but i wanted to achieve this without
having to add more parameters to my method call.

of course i could just say:
say_my_name(self.controller_name, self.method_name)

but i’m lazy and i don’t want to type “(self.controller_name,
self.method_name)” all the time, so i thought tried to find a way to
figure out these infos inside the say_my_name-method.

if there ain’t anything better than to parse caller, i’m gonna go with
that.

On 14 Nov., 12:30, “Enrico Thierbach”