Forum: Ruby on Rails invoking methods

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
MaD (Guest)
on 2008-11-14 12:57
(Received via mailing list)
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!
Frederick C. (Guest)
on 2008-11-14 13:09
(Received via mailing list)
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
MaD (Guest)
on 2008-11-14 13:28
(Received via mailing list)
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>
Enrico Thierbach (Guest)
on 2008-11-14 13:31
(Received via mailing list)
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/
MaD (Guest)
on 2008-11-14 13:44
(Received via mailing list)
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"
MaD (Guest)
on 2008-11-14 14:07
(Received via mailing list)
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.
This topic is locked and can not be replied to.