⛳
[Feature #20864] Kernel#warn で **options を受け入れ Warning.warn にそれを渡す提案
[Feature #20864] Allow Kernel#warn
to accept **options
and pass these to Warning.warn
.
-
Kernel#warn
で**options
を受け入れWarning.warn
にそれを渡すことを追加する提案 - 以下のように
#warn
を呼び出したときに付随するデータを渡すとその内容がいい感じに出力されるイメージですかね?
begin
...
rescue => error
warn "Something went wrong!", exception: error
end
- モチベーションとしては出力内容を構造化してよりわかりやすくしたい、みたいなところみたいですね
- 具体的な実装とか出力内容とかは特に提示はされてなかったんですがそれはこれからみたい
- 個人的にはわかりやすいなーと思いつつ現状の
Warning.warn
がcategory:
キーワード引数を受け取るようになっているので単純にWarning.warn
に**options
を移譲すると意味が違ってきそうなんですよねえ- Warning.warn (Ruby 3.3 リファレンスマニュアル)
- 同様のことがコメントにもかかれていますね
module Warning
# category: を受け取ることを期待している
def self.warn(message, category: nil)
super("#{category} warning : #{message.chomp}!!!\n")
end
end
- 以下のような専用のキーワード引数を追加することが代替として上げられていますね
# extra に構造化したい値を渡す
warn "something went wrong", extra: { exception: }
Discussion