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