# Use Bullet to Detect N+1 Queries in Rails

Used: bullet@8.0.0

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:

```ruby
gem 'bullet', group: 'development'
```

Then install it by running:

```sh
bundle install
```

### Configuration

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

```ruby
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:

```sh
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.
