はじめに
RSpecでは.rspec
というファイル1にデフォルトのオプションを書き込むことができます。
--format documentation
--warnings
.gitignore
や.zshrc
など、.
で始まる設定ファイルは#
を使って行コメントを書くことができます2。きっと、.rspec
でも同じようにコメント化できるのではないでしょうか?やってみましょう。
# --format documentation
--warnings
.rspec
を書き替えたのでRSpecを実行してみます。
$ bundle exec rspec
HomeController
returns a 200 response
#index
responds successfully
NotesController
#index
searches notes by the provided keyword
(以下略)
あれっ、--format documentation
が無効化されてない!!😭
ちなみに期待していた結果はこうです。
$ bundle exec rspec
......................................................................
Finished in 2.19 seconds (files took 1.67 seconds to load)
70 examples, 0 failures
いったいなんでなのー!?
RSpec Core 3.12までは#
は無視される
いろいろ調べたところ、.rspec
は#
を使ったコメントアウトに対応しておらず、ただ単に#
は無視されます。
そのため、# --format documentation
と書いても--format documentation
が有効化されたままになったのです。
もう少し詳しく
どうも設計思想として、.rspec
に書かれた内容はコマンドラインで渡すオプションと同じ扱いになっているようです。
つまり、以下のような.rspec
があった場合は、
--format documentation
--warnings
以下のように実行したのと同じ扱いになるわけです。
$ bundle exec rspec --format documentation --warnings
とはいえ、#
のようなオプションとして無効な文字列が.rspec
に含まれていると、
# --format documentation
--warnings
RSpec本体の内部ロジックで#
は無視されて、結局以下のコマンドを実行したのと同じ扱いになっていました。
$ bundle exec rspec --format documentation --warnings
RSpec Core 3.13以降なら#
でコメントアウトできる(はず)
うーん、これはちょっと挙動として不自然でわかりづらくないですか?と思ったのでRSpecにissueを投げてみました。
そして、.rspec
ファイルで#
を使ったコメントアウトが使えるようにするためのプルリクエストを出してみました。
その結果・・・なんとか無事にマージされました!🎉
この記事を書いている時点ではまだリリースされていないですが、順調にいけばRSpec Coreの次のリリース(おそらく3.13?)でこのコメントアウト機能が使えるようになるはずです!
2024.2.5追記
RSpec Core 3.13がリリースされ、ようやくこの変更が日の目を見ることになりました!
おまけ
ちなみにRSpec関連の記事をたくさん書いてる僕ですが、RSpecのコードにコントリビュートするのはこれが初めてです😅