Need cohercing a var into a method name

P

Phy Prabab

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

Hello,

I need a small bit of help, I am playing with Logger class and ran into a small problem I am not sure how to solve. Namely, I was interested in command line setting of the logging level, however, the passed argument is not accepted as a method name nor can I figure out how to get the arg "coherced" to a string prior to evaluation of the method call. Here is my code:

when "--debug"
if(DEBUG_LEVELS.include?(arg))
mylog.level = Logger::arg.to_s
^^^^^^^^^^^^
else
puts " "Debug level can be one of DEBUG, INFO, WARN, ERROR, or FATAL."
.....
(hi-lited is the code segment in question)
I am using GetoptLong to do the cmd line processing. The error given by ruby is:
test.rb:136 undefined method `arg' for Logger:Class (NoMethodError)
...

TIA,
Phy


____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
 
R

Rob Biedenharn

Hello,

I need a small bit of help, I am playing with Logger class and ran
into a small problem I am not sure how to solve. Namely, I was
interested in command line setting of the logging level, however,
the passed argument is not accepted as a method name nor can I
figure out how to get the arg "coherced" to a string prior to
evaluation of the method call. Here is my code:

when "--debug"
if(DEBUG_LEVELS.include?(arg))
mylog.level = Logger::arg.to_s
^^^^^^^^^^^^
else
puts " "Debug level can be one of DEBUG, INFO, WARN, ERROR,
or FATAL."
.....
(hi-lited is the code segment in question)
I am using GetoptLong to do the cmd line processing. The error
given by ruby is:
test.rb:136 undefined method `arg' for Logger:Class (NoMethodError)
...

TIA,
Phy

Logger.const_get(arg)

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)
 
R

Rick DeNatale

Hello,

I need a small bit of help, I am playing with Logger class and ran into a small problem I am not sure how to solve. Namely, I was interested in command line setting of the logging level, however, the passed argument is not accepted as a method name nor can I figure out how to get the arg "coherced" to a string prior to evaluation of the method call. Here is my code:

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

Logger#level actually takes an integer. Maybe something like this:

if Logger::Severity.const_defined?(arg)
mylog.level = Logger::Severity.const_get(arg)
else
puts "Debug level must be one of #{Logger.Severity.constants.join(',')."
end
 

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,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top