Bulletをテスト環境で実行してN+1を調査する
[[config/environments/test.rb]]にbullet設定を追加。
bulletを入れるとテスト実行時間が長くなってしまうのでCI(Github Action)実行時は有効にしないようにした。
Rails.application.configure do
if ENV["CI"] != true
config.after_initialize do
Bullet.enable = true
Bullet.bullet_logger = true
Bullet.raise = false
end
end
end
[[spec/support/bullet.rb]]に以下を追加する。
そのままだとログに追記されていくので、テスト実行のたびにログファイルを消すようにした。
# frozen_string_literal: true
RSpec.configure do |config|
if Bullet.enable?
config.before(:suite) do
bullet_log_path = Rails.root.join("log/bullet.log")
File.write(bullet_log_path, "")
end
config.before do
Bullet.start_request
end
config.after do
Bullet.perform_out_of_channel_notifications if Bullet.notification?
Bullet.end_request
end
end
end
これでrspecでのテストを実行し、N+1が存在する場合は[[log/bullet.log]]にログが出力される。