undefined method

I'm trying to pass a method to another object/method as a variable.

Example one, login 1 works just fine.

def login1   @driver.Login(username, password) end

However, if I try to pass "Login" to the driver as an argument (example two Login 2), I get "undefined method `command_string' for #<SOAP::RPC::Driver:0x316dc28>"

"Login" is a legit method for the SOAP::RPC::Driver. Do I need to do something to variable first?

def login2   command_string = "Login"   send_to_api(command_string) end

def send_to_api(command_string)   results = @driver.command_string(username, password) end

While you need to be careful, you can do exactly that by using send.

def send_to_api(command_string)    @driver.send(command_string, username, password) end

There's no need to assign to results, the last expression evaluated is the return value of the method.

-Rob

Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com

Thanks,

This appears to have worked. When you suggest the need to "be careful" what did you mean?

+bm

Through the use of Object#send any method can be invoked -- even those that are protected or private. You usually need to have a good reason to circumvent the restrictions put in place by the class author.

For a SOAP application, you're responsible for making sure that the methods that are called in this way are the "right" ones.

-Rob

Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com