- Ruby / Rails関連
READ MORE
原著者の許諾を得て翻訳・公開いたします。
Ruby 2.51から、Warning
モジュールを用いてKernel#warnの振る舞いをカスタマイズできるようになりました。やり方をご説明します。
def Warning.warn(w)
# superは元の振る舞い(#stderrへの出力)を呼び出す
super "\e[31;1mRUBY WARNING: \e[22m#{w.sub(/warning: /, '')}\e[0m"
end
# # #
# 例
warn "test"
# => RUBY WARNING: test
{ a: 1, a: 2 }
# => RUBY WARNING: (irb):4: key :a is duplicated and overwritten on line 4
$VERBOSE = true # level 2 warningsを表示
def a() end
def a() end
# => RUBY WARNING: (irb):8: method redefined; discarding old a
# => RUBY WARNING: (irb):6: previous definition of a was here
Jeremy Evans氏作の ruby-warning gemを使うと、さらにいくつかのwarning機能を解き放てます。
require "warning"
Warning.ignore /duplicated and overwritten/
{ a: 1, a: 2 }
# => なんも出ない
$VERBOSE = true
Warning.ignore :method_redefined
def a() end
def a() end
# => なんも出ない
Warning
モジュールそのものは既にRuby 2.4からありますが、Kernel#warn
では利用していませんでした。 ↩
READ MORE
READ MORE
READ MORE