Sergio Xalambrí

bullet@8.0.0
View as Markdown

Tutorial

Use Bullet to Detect N+1 Queries in Rails

If you're using Ruby on Rails, Bullet is an essential gem for detecting and fixing N+1 query issues in your application.

Installation

Add the Bullet gem to your Gemfile:

gem 'bullet', group: 'development'

Then install it by running:

bundle install

Configuration

Configure Bullet in your Rails application by adding the following to config/environments/development.rb:

config.after_initialize do
  Bullet.enable = true
  Bullet.console = true
  Bullet.rails_logger = true
end

Detecting N+1 Queries

Once configured, start your application and interact with it. Bullet will log warnings like the following when an N+1 query is detected:

user: sergio
GET /api/v1/users
USE eager loading detected
  Session => [:user]
  Add to your query: .includes([:user])
Call stack
  /app/controllers/api/v1/users_controller.rb:13:in `show'

These logs indicate where eager loading is missing and suggest how to resolve the issue by adding .includes([:user]) to your query.

By integrating Bullet into your development workflow, you can proactively identify inefficient queries and optimize database performance in your Rails application.

Do you like my content?

Your sponsorship helps me create more tutorials, articles, and open-source tools.

Sponsor me on GitHub