sentry-ruby-setup について
sentry-ruby-setupは、エラー監視、ログ、トレースを必要とする開発者向けに、RubyプロジェクトへSentryを導入するスキルです。一般的なRubyとRailsの設定に加え、動作確認や問題の切り分けも扱います。
主な機能
- 01sentry-rubyの導入
- 02Sentryの初期化設定
- 03Railsとバックグラウンドジョブの連携
- 04ログのパンくず、トレース、プロファイリング設定
- 05イベント送信の確認と問題解決
活用シーン
- 01Rubyアプリにエラー監視を追加
- 02RailsプロジェクトでSentryを設定
- 03リクエストのトレースやプロファイリングを有効化
- 04エラーやトレースが届かない原因を調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ getsentry/ sentry-agent-skills --skill sentry-ruby-setupインストール後、Claude Code で/sentry-ruby-setupを入力して読み込まれたか確認します。
詳細
Sentry Ruby のセットアップ
Ruby プロジェクトに Sentry をインストールして設定します。
このスキルを使用するタイミング
- Ruby アプリに「Sentry を追加する」または「Sentry をインストールする」とユーザーが依頼した場合
- Ruby でエラー監視、ログ記録、トレースを行いたい場合
sentry-rubygem または Ruby on Rails について言及した場合
重要: 以下の設定オプションとコードサンプルは例です。API やデフォルト値が変更されている可能性があるため、実装する前に必ず docs.sentry.io で確認してください。
要件
- Ruby 2.4 以降、または最近の JRuby バージョン
インストール
Gemfile に追加します。
gem "sentry-ruby"
# For profiling, add ONE of:
gem "stackprof" # SDK 5.9.0+ — works on all Ruby versions
# gem "vernier" # SDK 5.21.0+ — requires Ruby 3.2.1+, better for multi-threaded servers
# Also requires: config.profiler_class = Sentry::Vernier::Profiler
次に、以下を実行します。
bundle install
設定
できるだけ早い段階で初期化します。
require "sentry-ruby"
Sentry.init do |config|
config.dsn = "YOUR_SENTRY_DSN"
config.send_default_pii = true
# Breadcrumbs from logs
config.breadcrumbs_logger = [:sentry_logger, :http_logger]
# Tracing
config.traces_sample_rate = 1.0
# Profiling (requires stackprof or vernier gem)
config.profiles_sample_rate = 1.0
# config.profiler_class = Sentry::Vernier::Profiler # Uncomment if using vernier
# Logs
config.enable_logs = true
end
Rails との統合
Rails の場合は、config/initializers/sentry.rb に追加します。
Sentry.init do |config|
config.dsn = ENV["SENTRY_DSN"]
config.send_default_pii = true
config.breadcrumbs_logger = [:active_support_logger, :http_logger]
config.traces_sample_rate = 1.0
config.profiles_sample_rate = 1.0
config.enable_logs = true
end
Rails 固有の Gems
# Gemfile
gem "sentry-ruby"
gem "sentry-rails" # Rails integration
gem "sentry-sidekiq" # If using Sidekiq
gem "sentry-delayed_job" # If using Delayed Job
gem "sentry-resque" # If using Resque
設定オプション
| オプション | 説明 | デフォルト |
|---|---|---|
dsn | Sentry DSN | nil(SDK はこれがない場合、何もしません) |
send_default_pii | ユーザーデータを含める | false |
traces_sample_rate | トレースするトランザクションの割合 | nil(トレースは無効) |
profiles_sample_rate | プロファイルを取得するトレースの割合 | nil(プロファイリングは無効) |
enable_logs | ログを Sentry に送信する | false |
environment | 環境名 | "development"(SENTRY_CURRENT_ENV、SENTRY_ENVIRONMENT、RAILS_ENV、RACK_ENV の順に確認します) |
release | リリースバージョン | 自動検出 |
パンくずログのロガー
| ロガー | 説明 |
|---|---|
:sentry_logger | Sentry 独自のロガー |
:http_logger | HTTP リクエストのパンくず |
:redis_logger | Redis コマンドのパンくず |
:active_support_logger | Rails ActiveSupport(Rails のみ) |
環境変数
SENTRY_DSN=https://[email protected]/456
SENTRY_AUTH_TOKEN=sntrys_xxx
SENTRY_ORG=my-org
SENTRY_PROJECT=my-project
検証
# Capture test message
Sentry.capture_message("Test message from Ruby")
# Or trigger intentional error
1 / 0
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| エラーが表示されない | Sentry.init が早い段階で呼び出されていることを確認し、DSN を確認します |
| トレースがない | traces_sample_rate を 0 より大きく設定します |
| プロファイルがない | stackprof gem を追加し、profiles_sample_rate を設定します |
| Rails のエラーがない | sentry-ruby ではなく sentry-rails gem を使用します |
コメント
Markdown 対応