MENU
カテゴリー

【Ruby on Rails】Rails開発中にN + 1を検知する

  • URLをコピーしました!
目次

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を導入することを検討しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
目次