Using a variable as a method name?

P

Phy Prabab

Hello,

I need a bit of help understanding how to use a
variable as a name for a method call. Forgive me
trying to explains this, I am new at all this. In the
code listed, I am tring to set the debugging level of
the Logger class, however, the variable in question is
not being sustituted prior to interpreting the method
call.

when "--debug"
if($DEBUG_LEVELS.include?(arg))
mylog.level = Logger::arg
^^^^^^^^^^^
else
puts "Debug level can be one of: DEBUG, INFO,
WARN, or ERROR"
dis_help
end

This causes Ruby to spit out that there is no method
called arg which is correct. So how do I get arg to
be substituted to the value rather than the var name?
I tried dereferencing and using the it within a string
(okay, a dumb idea). Any way, any help will be much
appreciated!

TIA!
Phy


____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping
 
C

Corey Haines

[Note: parts of this message were removed to make it a legal post.]

Try Logger.send(arg)
 
S

Sam Larbi

[Note: parts of this message were removed to make it a legal post.]

This causes Ruby to spit out that there is no method
called arg which is correct. So how do I get arg to
be substituted to the value rather than the var name?
I tried dereferencing and using the it within a string
(okay, a dumb idea). Any way, any help will be much
appreciated!


What is the /type/ of arg?

If it's a Proc, you might try arg.call().

If you're trying to do it via string, look into eval.

Jay Fields has some thoughts:
http://blog.jayfields.com/2006/07/ruby-eval-with-binding.html
http://blog.jayfields.com/2006/07/ruby-block-scope.html

I seem to remember seeing a better reference, only I can't recall by whom or
where.

Regards,
Sam
 
A

Arlen Cuss

[Note: parts of this message were removed to make it a legal post.]

Hi,

Try Logger.send(arg)


In the case of Rails, `arg' should also be lower case. Is it Logger.warn or
warning?

Logger.send(arg.downcase)

Arlen
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,187
Members
46,730
Latest member
AudryNolan

Latest Threads

Top