2021-09-24
Kaigi on Rails のタイムテーブルが発表されていた。 2日目のキーノートの直前に話します。
事前録画の動画ももう提出し終えて準備は盤石
新型コロナウイルスのワクチン1回目を接種してきた。 今はまだ熱はなく、肩が少し痛いぐらい。しかし腕は十分上げられる。
会社のRSpecでテスト対象のコードがexit 0
をしていてそれをrescueし忘れている問題があった。
これが起きるとRSpecがsilentに終了する(しかもexit 0
だと終了コードも0のまま)で、問題があることにも気が付きづらい。
ということで、これを防ぐために次のようなコードをspec_helper.rb
に書いた。
RSpec.configure do |config| config.around do |ex| ex.run rescue SystemExit raise "Unexpected SystemExit! You should rescue the SystemExit in this test case with `raise_error` or something." end end
これってRSpec側で対応してほしいなあと思って調べたら、それっぽいIssueがあった。
これを見ると「RSpec としては何もする気はない」と書かれていた。つらい。
たしかに例外をrescueするのもat_exit
を使うのも微妙な感じがあるけど、しかし気が付かずにテストが破滅するほうがはるかに最悪だと思うのだけどなあ。古いIssueなので、今もう一回提案したらまた話が違うかもしれない。