目次
Ruby on Railsで開発中にN + 1を検知する
RubyアプリケーションでのN+1検出ライブラリbulletというものが存在する。
その使用方法をここに記しておく。
bulletをインストールする
Gemfile
group :development, :test do
gem 'pry-rails'
gem 'pry-byebug'
gem 'bullet'
end
こんな感じでgem ‘bullet’と記載する。
そして bundle install
をターミナルで実行。
すると、以下のようなメッセージが表示される。表示されれば成功。
Bundle complete! 20 Gemfile dependencies, 78 gems now installed.
bulletの初期設定をする
アプリケーションのルートディレクトリで以下のコマンドを実行する。
$ rails g bullet:install
そうすると以下のような対話型スクリプトが起動する。
Enabled bullet in config/environments/development.rb
Would you like to enable bullet in test environment? (y/n)
これで、yかnを選択する。テスト環境でもbulletを使用するかを問われているらしい。
その後、config/environments/development.rb
の中身を確認する。
以下のコードが追加されているかを確認。
config.after_initialize do
Bullet.enable = true
Bullet.alert = true
Bullet.bullet_logger = true
Bullet.console = true
# Bullet.growl = true
Bullet.rails_logger = true
Bullet.add_footer = true
end # Settings specified here will take precedence over those in config/application.rb.
このようなコードが追加されていたら問題なし。
development.rbに記載されている設定値についてご自身で調べてみてください。
おわり
これでbulletが使用できるようになり、N + 1を検知し知らせてくれます。rails serve
コマンドを実行してみましょう。
すると、development.rbの設定に合わせてアラートを出してくれます。
ただ、このbulletも完全ではないためN + 1を解消する場合は、railsログ(rails serveコマンドを実行したときに出てくるログ)を確認しながら解決をしていくことが正しい方法だと思います。
あくまで補助的なものとして、bulletというgemを導入することを検討しましょう。