プロジェクト

全般

プロフィール

バグ #1308

完了

Kernel#warnをシグネチャの合わないメソッドで上書きしている

cob odo さんが5年以上前に追加. 約5年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
クラッシュする:
はい

説明

https://docs.ruby-lang.org/ja/latest/method/Kernel/m/warn.html のようにKernel#warnが組み込みライブラリで定義されていますが、 core/utils.rb でグローバルなwarnメソッドを別途定義しているため、こちらが呼ばれてしまいます。
しかし core/utils.rb の方ではキーワード引数 uplevel が無いため、標準ライブラリ内でuplevel付きのwarn呼び出しがあると、エラーとなります(通常は無視されるようですが、RUBYOPT=-Wではクラッシュします)。

さしあたり、

def warn(msg, uplevel: nil)

のようにしておけばクラッシュはしませんでした。


再現手順

環境変数RUBYOPT=-W 付きでmikutterを起動するとクラッシュします。

{MIKUTTER_ROOT}/core/utils.rb:114:in `warn': wrong number of arguments (given 2, expected 1) (ArgumentError)
from ~/.rbenv/versions/2.5.3/lib/ruby/2.5.0/uri/common.rb:339:in `regexp'
from {MIKUTTER_ROOT}/core/lib/diva_hacks/entity/url_entity.rb:14:in `<module:Entity>'

他の形式にエクスポート: Atom PDF