[Feature #20864] Kernel#warn で **options を受け入れ Warning.warn にそれを渡す提案

2024/10/25に公開

[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.warncategory: キーワード引数を受け取るようになっているので単純に Warning.warn**options を移譲すると意味が違ってきそうなんですよねえ
module Warning
  # category: を受け取ることを期待している
  def self.warn(message, category: nil)
    super("#{category} warning : #{message.chomp}!!!\n")
  end
end
  • 以下のような専用のキーワード引数を追加することが代替として上げられていますね
# extra に構造化したい値を渡す
warn "something went wrong", extra: { exception: }
GitHubで編集を提案

Discussion