From: "Stephan Kämper" Date: 2004-09-10T19:20:03+09:00 Subject: Switching off warnings temporarily Hi, although always running code with '-w' is a good idea, you sometimes might like to switch off warnings locally, temporarily or both. Now, http://www.caliban.org/ruby/rubyguide.shtml#warnings shows how to accomplish this (I just used 'yield' instead of 'call'ing a passed block). (I know that assigning the result of puts to whatever *is* useless, its just to produce a warning) ---- Code starts here ---- def silently warn_level = $VERBOSE $VERBOSE = false res = yield $VERBOSE = warn_level res end bark = puts ( "Here be Dragons!" ) keep_silent = silently do any_line_of_code_will_do = 1 puts ( "Creatures under a smooth surface" ) nil end bark = puts ( "Here be dragons!" ) ---- End of the Code ---- Remark: That really reads great: 'silently do ....' :-) (We might like to see just the opposite 'verbosely do' with warnings switch on, no matter what.) Now I came up with four ways to run this code: With or with out the '-w' command line option and with or without the (apparently useless) line commented out. My expectation was ('is' actually) to get two warnings each way. However Code run with | No. of warnings -------------------------------- #any... -w | 3 any... -w | 3 #any... | 3 any... | 2 To get the result I expect, I apparently need to run the code without the '-w' option and put some (useless) code before the line that might create a warning. I have to admit that I just don't get it... Why is that? Do you have any explanations? Happy rubying Stephan -- Stephan K�mper/IT-Beratung http://www.stephankaemper.de Quality Assurance / Software Test / Data Analysis