Module: Warning
- Defined in:
- error.c,
error.c
Overview
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.
Changing the behavior of Warning.warn is useful to customize how warnings are handled by Ruby, for instance by filtering some warnings, and/or outputting warnings somewhere other than $stderr.
If you want to change the behavior of Warning.warn you should use Warning.extend(MyNewModuleWithWarnMethod) and you can use super to get the default behavior of printing the warning to $stderr.
Example:
module MyWarningFilter
def warn(, category: nil, **kwargs)
if /some warning I want to ignore/.match?()
# ignore
else
super
end
end
end
Warning.extend MyWarningFilter
You should never redefine Warning#warn (the instance method), as that will then no longer provide a way to use the default behavior.
The warning gem provides convenient ways to customize Warning.warn.
Defined Under Namespace
Classes: buffer
Class Method Summary collapse
-
.[](category) ⇒ Boolean
Returns the flag to show the warning messages for
category. -
.[]=(category) ⇒ Object
Sets the warning flags for
category.
Instance Method Summary collapse
-
#warn(msg, category: nil) ⇒ nil
Writes warning message
msgto $stderr.
Class Method Details
.[](category) ⇒ Boolean
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
etc.
-
:experimental-
experimental features
-
Pattern matching
-
:performance-
performance hints
-
Shape variation limit
-
225 226 227 228 229 230 |
# File 'error.c', line 225
static VALUE
rb_warning_s_aref(VALUE mod, VALUE category)
{
rb_warning_category_t cat = rb_warning_category_from_name(category);
return RBOOL(rb_warning_category_enabled_p(cat));
}
|
.[]=(category) ⇒ Object
Sets the warning flags for category. See Warning.[] for the categories.
240 241 242 243 244 245 246 247 248 249 250 251 |
# File 'error.c', line 240
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;
}
|
Instance Method Details
#warn(msg, category: nil) ⇒ nil
Writes warning message msg to $stderr. This method is called by Ruby for all emitted warnings. A category may be included with the warning.
See the documentation of the Warning module for how to customize this.
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 |
# File 'error.c', line 264
static VALUE
rb_warning_s_warn(int argc, VALUE *argv, VALUE mod)
{
VALUE str;
VALUE opt;
VALUE category = Qnil;
rb_scan_args(argc, argv, "1:", &str, &opt);
if (!NIL_P(opt)) rb_get_kwargs(opt, &id_category, 0, 1, &category);
Check_Type(str, T_STRING);
rb_must_asciicompat(str);
if (!NIL_P(category)) {
rb_warning_category_t cat = rb_warning_category_from_name(category);
if (!rb_warning_category_enabled_p(cat)) return Qnil;
}
rb_write_error_str(str);
return Qnil;
}
|