Class: Pinot::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/pinot/railtie.rb

Overview

Rails integration via Railtie — zero configuration required.

Automatically activated when the gem is required inside a Rails app. Just add ‘gem “pinot-client”` to your Gemfile.

What it does

  1. **ActiveSupport::Notifications bridge** — every Pinot query fires a “sql.pinot” event on the AS::N bus, picked up by Rails log subscribers, Skylight, Scout APM, etc.

  2. **OpenTelemetry bridge** — when the opentelemetry-api gem is present, creates “pinot.query” spans and injects W3C trace-context headers into every outbound broker request.

  3. **X-Request-Id propagation** — inserts Pinot::RequestIdMiddleware into the Rack stack. The current request’s X-Request-Id is forwarded as an HTTP header on every broker call so Pinot broker logs can be correlated with application request logs.

Opting out of individual features

# config/initializers/pinot.rb
Rails.application.config.pinot.notifications  = false
Rails.application.config.pinot.open_telemetry = false
Rails.application.config.pinot.request_id     = false

Manual setup (non-Rails / opt-out of Railtie entirely)

require "pinot/active_support_notifications"
Pinot::ActiveSupportNotifications.install!

require "pinot/open_telemetry"
Pinot::OpenTelemetry.install!

# In your Rack middleware stack:
use Pinot::RequestIdMiddleware