ページ内ナビ
概要
BulletはRuby/Railsなどの開発中にデータベースアクセスを監視し、N+1 query、使われていないeager loading、counter cacheで減らせるCOUNT queryを検出するgemです。ログやブラウザ通知に加え、Sentry・Slack・OpenTelemetryなどへ警告を送る構成も選べます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
N+1 queryを検出して必要なeager loadingを示す
ActiveRecordやMongoidのassociation accessを監視し、同じ関連を繰り返し取得するN+1 queryを検出します。ログには対象model・associationと、includesなどで改善するための手掛かりが表示されます。
出典:[1]
不要なeager loadingとcounter cache候補も検出する
先読みしたassociationが実際には使われていない場合や、関連件数の取得をcounter cacheで減らせる場合も別のdetectorで通知できます。必要なdetectorだけを有効・無効にできます。
出典:[1]
開発ログからSentry・Slack・OpenTelemetryまで通知先を選べる
Bullet log、Rails log、browser consoleのほか、Sentry、Honeybadger、Bugsnag、AppSignal、Airbrake、Rollbar、Slack、OpenTelemetryなど複数のnotification backendを設定できます。
出典:[1]
向いている用途
Rails/Mongoidのクエリ効率問題を開発・テスト段階で早く見つけたい場合に向く
画面表示やrequestを動かした時点でORM由来のquery patternを確認し、productionへ出す前にN+1や過剰な先読みを修正したいWeb applicationに適します。Bullet.raise = trueを使えばtest failureとして扱う構成も可能です。
出典:[1]
導入前の確認
8.2.0はActiveRecord 7未満・Mongoid 8未満をサポートしない
8.2.0のCHANGELOGはActiveRecord 7未満とMongoid 8未満のsupportを削除したと明記しています。gem自体はRuby 2.7以上を要求するため、既存applicationへ更新する場合はORMとRubyのversionを先に確認してください。
参考にした公式資料
- [1]Bullet 8.2.0 source snapshot README(2026-10-04)
- [2]Bullet 8.2.0 changelog(2026-10-04)
- [3]Bullet 8.2.0 gemspec(2026-10-04)
編集部からの補足
Bulletは本番APMの代替ではなく、開発中にORMのquery patternへ即座にフィードバックを返す道具として使うと効果が分かりやすいです。8.2.0ではActiveRecord 7+ / Mongoid 8+が前提なので、古いRails系ではversion固定も確認してください。
3ステップで試す
- 1
Rails applicationへBullet 8.2.0をdevelopment用に追加する
Bullet 8.2.0はActiveRecord 7以上を前提にします。既存Rails applicationのdevelopment groupへversionを固定して追加します。
cd your-rails-app && bundle add bullet --version 8.2.0 --group development - 2
Bulletの標準設定を生成する
upstream READMEのgeneratorでdevelopment設定を追加します。generatorの質問でtest environmentにも入れるか選択できます。
cd your-rails-app && bundle exec rails g bullet:install - 3
導入versionと有効状態を確認する
applicationを起動する前に8.2.0が読み込まれていることを確認します。実際のN+1検出はdevelopment requestを動かして
log/bullet.logなどで確認します。cd your-rails-app && bundle exec rails runner 'puts "Bullet #{Bullet::VERSION} enabled=#{Bullet.enable?}"'
成長
成長の推移 · 直近30日
7,337 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 0
- Open PR
- 6
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Tabularis5,109 Stars
共通タグ 1件 · 共通カテゴリ 2件
SQL editor・notebook・database plugin・MCPを一つのdesktop workspaceへまとめる
TypeScript - mysql22,276 Stars
共通タグ 2件 · 共通カテゴリ 2件 · 同じ言語
RubyからMySQL・MariaDBへ接続し、SQLクエリ・prepared statement・streamingで結果を扱う
Ruby - Ransack5,858 Stars
共通タグ 2件 · 共通カテゴリ 1件 · 同じ言語
RailsのActiveRecordに検索・絞り込み・ソートを追加し、追加検索基盤なしでフォームを構築する
Ruby - AASM5,229 Stars
共通タグ 2件 · 共通カテゴリ 1件 · 同じ言語
Rubyクラスに状態・イベント・遷移を定義し、業務状態の変化をステートマシンとして管理する
Ruby - claude-usage2,244 Stars
共通タグ 2件 · 共通カテゴリ 1件
Claude Codeのlocal JSONL transcriptをSQLiteへ集計し、token・cost・session・subagent履歴をCLI/Web/VS Codeで監査する
Python - RepoBar2,198 Stars
共通タグ 2件 · 共通カテゴリ 1件
GitHub repository群のIssue・PR・CI・release・API quota・local Git状態をmacOS menu barとCLIへ集約する
Swift
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。