Issue #9423 has been updated by Nobuyoshi Nakada. Then, what about a method, instead of another global variable, like as: - if no warnings ``` unless warning?(0) # ... end ``` - if medium warnings ``` if warning?(0) # ... end ``` or ``` warning?(0) do # ... end ``` - if strong warnings ``` if warning? # ... end ``` or ``` warning? do # ... end ``` ---------------------------------------- Feature #9423: Improve warning semantics https://bugs.ruby-lang.org/issues/9423#change-44391 * Author: Atlas Prime * Status: Feedback * Priority: Normal * Assignee: * Category: core * Target version: current: 2.2.0 ---------------------------------------- Two suggestions for future version of Ruby that wold make warning levels more intuitive easier to work with. First, rename $VERBOSE to $WARN for these reasons: * `ruby` flags that set $VERBOSE are `-w` and `-W` (warnings levels). * $VERBOSE controls output produced by `warn` method. * $VERBOSE and FileUtils:Verbose are unrelated. * $WARN is shorter ;-) Second, it is confusing that `nil` and `false` mean different levels. Instead of the current `nil` as level 0, `false` as level 1, and `true` as level 2, it would be nice if `nil` and `false` both mean "off", and then go from 0 on up to mean "on" of increasing degree. Just to clarify my meaning (not a use case example): # nil, false mean no warning if $WARN case $WARN when 0 # lesser level of warning when 1 # greater level of warning when 2 # can go higher if needed for rare use case end end These are incompatible changes, but can be phased-in with support both $WARN and $VERBOSE for intermediate period. -- http://bugs.ruby-lang.org/