Calling a method whose name I only know at run-time


#1

Hi folks,

I have a handful of methods that perform operations on chunks of data.
Which of these methods is called is specified in a YAML configuration so
I only know the method names at run-time, which are, of course, strings.
I am familiar with eval but would like to avoid using it to keep my code
safe. Is there another way I can do it?

Thanks,

Chad.


#2

Oops, solved it. Sorry, I missed Object#method the first time around.
8)


#3

On 2/3/07, Chad T. removed_email_address@domain.invalid wrote:

Oops, solved it. Sorry, I missed Object#method the first time around.
8)

And there is the Object#send that will do what you want, i.e.
any_object.send(“method1”, arg1, arg2)

or

any_object.send(“method1”, *args)

(if send insists on symbols for method names, use String#to_sym)


#4

Hi –

On Sat, 3 Feb 2007, Jan S. wrote:

(if send insists on symbols for method names, use String#to_sym)

It doesn’t; you can use either.

David


#5

It looks like send is actually more appropriate for my needs, thanks,
I’ll give it a go.