⛳
[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