RSpecテストでActiveRecordのSQLデバッグログをオンにするにはどうすればよいですか?


92

私のモデルにはいくつかのRSpecテストがあり、Railsサーバーモードと同じようにSQL ActiveRecordロギングをオンにしたいと思います。どうやってするか?

私は私のテストを

RAILS_ENV=test bundle exec rspec my/test_spec.rb

ありがとう

回答:


55

デフォルトでは、すべてのdbクエリはすでにテストモードでログに記録されます。彼らは中になりますlog/test.log


ああ、コンソールで見るつもりだった。しかし、これで十分です。
lzap

21
コンソールでそれを見ることができますtail -f log/test.log
idlefingers

343

テストのどこかでActiveRecordロガーをstdoutに設定してみてください。rspecを使用している場合は、おそらくスペックヘルパーにありますか?

ActiveRecord::Base.logger = Logger.new(STDOUT)

3
active_recordデフォルトでSQLをログに記録しないため、含まれているだけでgemをテストする場合は、はるかに役立ちます。
Brendon Muir 2018

IRuby(RubyのJupyter)を使用しSTDOUTている場合は、再マップされているため、$stdout代わりに使用する必要があります。
Ulysse BN

12

セットする

config.log_level = :info 

テスト環境で


4
またはconfig.log_level =:debugに設定して、実行された各SQLステートメントを含む最大出力を取得します
Zack Xu

9

他の回答があなたのケースでうまくいかない場合は、テスト環境の「ログレベル」を確認してください。

デフォルトは 'debug'で、Railsによって生成されたSQLを出力します。「info」に設定されている場合、SQLは失われます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.