# module Warning

The `Warning` module contains a single method named `warn`, and the module extends itself, making `Warning.warn` available. `Warning.warn` is called for all warnings issued by Ruby. By default, warnings are printed to $stderr.

By overriding `Warning.warn`, you can change how warnings are handled by Ruby, either filtering some warnings, and/or outputting warnings somewhere other than $stderr. When `Warning.warn` is overridden, super can be called to get the default behavior of printing the warning to $stderr.

### Public Class Methods

[](p1) click to toggle source

call-seq

    Warning[category]  -> true or false

Returns the flag to show the warning messages for `category`. Supported categories are:

`:deprecated`

  deprecation warnings

- assignment of non-nil value to `$,` and `$;`

- keyword arguments

- proc/lambda without block

etc.

`:experimental`

  experimental features

- Pattern matching

    static VALUE
    rb_warning_s_aref(VALUE mod, VALUE category)
    {
        rb_warning_category_t cat = rb_warning_category_from_name(category);
        if (rb_warning_category_enabled_p(cat))
            return Qtrue;
        return Qfalse;
    }

[]=(p1, p2) click to toggle source

call-seq

    Warning[category] = flag -> flag

Sets the warning flags for `category`. See `Warning.[]` for the categories.

    static VALUE
    rb_warning_s_aset(VALUE mod, VALUE category, VALUE flag)
    {
        unsigned int mask = rb_warning_category_mask(category);
        unsigned int disabled = warning_disabled_categories;
        if (!RTEST(flag))
            disabled |= mask;
        else
            disabled &= ~mask;
        warning_disabled_categories = disabled;
        return flag;
    }

### Public Instance Methods

warn(msg) → nil click to toggle source

Writes warning message `msg` to $stderr. This method is called by Ruby for all emitted warnings.

    static VALUE
    rb_warning_s_warn(VALUE mod, VALUE str)
    {
        Check_Type(str, T_STRING);
        rb_must_asciicompat(str);
        rb_write_error_str(str);
        return Qnil;
    }