なんで導入しようと思ったのか
アプリケーションを作成中にN+1問題を可視化できるにして分かりやすくするような便利な機能ないかな~と探してみましたところタイトルのgemを見つけてこれは便利だと思いましたので、備忘録として使い方を記述していきたいと思います。
そもそもN+1問題って?
Mysqlなどのデータベースからデータを読み込む際に余計にデータを読み込んでしまうことです。
分かりやすく例えるなら、商品を買おうと思ってレジにもっていったら一つ一つ商品をスキャンしていくイメージですね。
アプリケーションの動作がもっさりするなどの弊害があるため基本的にこの問題はなくしたほうが良いです。
導入
以下のコードをGemfile
に記述すれば大丈夫です。
grop :development do
Gem 'bullet'
end
あとはbundle install
して下のコマンドを記述すれば準備は完了です
bundle exec rails g bullet:install
公式テキストを見てみましたらどうやらほかにもいろいろと設定ができるらしいですか今回は省略します。
デフォルトで設定されている内容
上記のコマンドで、```config/environments/↑上記のコマンドで、config/environments/development.rbにデフォルトで以下の様なコードが追加されました。
development.rb
Rails.application.configure do
# ここから
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
# ここまでが追加される。以下、同ファイルにもとから入っていた内容は省略
end
bulletの詳細な設定項目一覧←こちらにて各項目の設定内容についての確認ができます。
以上です。