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

目次

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をコピーしました!
  • URLをコピーしました!

この記事を書いた人

東京のIT企業に所属しながらフルリモートで働く現役Webエンジニア。体育会出身で営業職からプログラミングを学び始め、2020年秋に未経験ながらエンジニアとして転職。Jリーグ下部組織出身/水戸商業サッカー部OB/欧州でのトライアウト経験あり

コメント

コメントする

CAPTCHA


目次