Ruby & PHP
For agents: paste the DSN from
list_keysinto the snippet for the platform; create the project with the matching platform id (create_project(org="acme", slug="web", name="Web", platform="rails")). Platforms on this page:rails,laravel,symfony.
Rails uses sentry-ruby + sentry-rails; Laravel and Symfony use the official Sentry bundle for the framework. All three hook the framework's exception path, console/rake commands, and job runners once configured. The one recurring surprise: exceptions you rescue yourself are not reported unless you capture them explicitly.
Replace https://<public_key>@ingest.bugwatch.io/<project_number> with the DSN from list_keys or the project's settings page.
Ruby on Rails
- Platform id:
rails· Language: Ruby · Runs in: server - Install:
bundle add sentry-ruby sentry-rails - Files: config/initializers/sentry.rb
Sentry.init do |config|
config.dsn = "https://<public_key>@ingest.bugwatch.io/<project_number>"
config.breadcrumbs_logger = [:active_support_logger, :http_logger]
config.traces_sample_rate = 1.0
config.release = ENV["RELEASE"]
config.send_default_pii = false
end
Lifecycle notes:
- The initializer runs on boot for the app server, console and rake tasks; ActionController, ActiveJob and ActionMailer are instrumented automatically.
- Sidekiq/Resque: add sentry-sidekiq so job failures report with retry context.
- Rescued exceptions (rescue_from) are NOT reported unless you call Sentry.capture_exception in the handler.
Laravel
- Platform id:
laravel· Language: PHP · Runs in: server - Install:
composer require sentry/sentry-laravel && php artisan sentry:publish - Files: .env · bootstrap/app.php
# .env
SENTRY_LARAVEL_DSN=https://<public_key>@ingest.bugwatch.io/<project_number>
SENTRY_TRACES_SAMPLE_RATE=1.0
SENTRY_RELEASE=${APP_VERSION}
// bootstrap/app.php (Laravel 11+)
->withExceptions(function (Exceptions $exceptions) {
Integration::handles($exceptions);
})
Lifecycle notes:
- The service provider auto-registers; reporting happens in the exception handler (Integration::handles) so report()-ed exceptions and unhandled ones both flow.
- Queue jobs, scheduled commands and Octane workers are instrumented — Octane needs the sentry:publish config for per-request scope reset.
- Use
php artisan sentry:testto send a verification event before shipping.
Symfony
- Platform id:
symfony· Language: PHP · Runs in: server - Install:
composer require sentry/sentry-symfony - Files: config/packages/sentry.yaml
sentry:
dsn: "https://<public_key>@ingest.bugwatch.io/<project_number>"
options:
traces_sample_rate: 1.0
release: "%env(RELEASE)%"
Lifecycle notes:
- The bundle listens on kernel.exception and console.error; Messenger handlers report per message.
Symbolication for this family
Ruby and PHP report readable frames directly; there is nothing to upload. Set release (env var or @project.version@-style) so release health and regression detection line up with deploys.