Class: Sentry::Railtie

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

Instance Method Summary collapse

Instance Method Details

#activate_structured_loggingObject



142
143
144
145
146
# File 'lib/sentry/rails/railtie.rb', line 142

def activate_structured_logging
  if Sentry.configuration.rails.structured_logging.enabled && Sentry.configuration.enable_logs
    Sentry::Rails::StructuredLogging.attach(Sentry.configuration.rails.structured_logging)
  end
end

#activate_tracingObject



133
134
135
136
137
138
139
140
# File 'lib/sentry/rails/railtie.rb', line 133

def activate_tracing
  if Sentry.configuration.tracing_enabled? && Sentry.configuration.instrumenter == :sentry
    subscribers = Sentry.configuration.rails.tracing_subscribers
    Sentry::Rails::Tracing.register_subscribers(subscribers)
    Sentry::Rails::Tracing.subscribe_tracing_events
    Sentry::Rails::Tracing.patch_active_support_notifications
  end
end

#configure_cron_timezoneObject



82
83
84
85
# File 'lib/sentry/rails/railtie.rb', line 82

def configure_cron_timezone
  tz_info = ::ActiveSupport::TimeZone.find_tzinfo(::Rails.application.config.time_zone)
  Sentry.configuration.cron.default_timezone = tz_info.name
end

#configure_project_rootObject



74
75
76
# File 'lib/sentry/rails/railtie.rb', line 74

def configure_project_root
  Sentry.configuration.project_root = ::Rails.root.to_s
end

#configure_trusted_proxiesObject



78
79
80
# File 'lib/sentry/rails/railtie.rb', line 78

def configure_trusted_proxies
  Sentry.configuration.trusted_proxies += Array(::Rails.application.config.action_dispatch.trusted_proxies)
end

#extend_controller_methodsObject



87
88
89
90
91
92
93
94
95
96
97
# File 'lib/sentry/rails/railtie.rb', line 87

def extend_controller_methods
  require "sentry/rails/controller_methods"
  require "sentry/rails/controller_transaction"
  require "sentry/rails/overrides/streaming_reporter"

  ActiveSupport.on_load :action_controller do
    include Sentry::Rails::ControllerMethods
    include Sentry::Rails::ControllerTransaction
    ActionController::Live.send(:prepend, Sentry::Rails::Overrides::StreamingReporter)
  end
end

#inject_breadcrumbs_loggerObject



103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/sentry/rails/railtie.rb', line 103

def inject_breadcrumbs_logger
  if Sentry.configuration.breadcrumbs_logger.include?(:active_support_logger)
    require "sentry/rails/breadcrumb/active_support_logger"
    Sentry::Rails::Breadcrumb::ActiveSupportLogger.inject(Sentry.configuration.rails.active_support_logger_subscription_items)
  end

  if Sentry.configuration.breadcrumbs_logger.include?(:monotonic_active_support_logger)
    return warn "Usage of `monotonic_active_support_logger` require a version of Rails >= 6.1, please upgrade your Rails version or use another logger" if ::Rails.version.to_f < 6.1

    require "sentry/rails/breadcrumb/monotonic_active_support_logger"
    Sentry::Rails::Breadcrumb::MonotonicActiveSupportLogger.inject
  end
end

#override_streaming_reporterObject



125
126
127
128
129
130
131
# File 'lib/sentry/rails/railtie.rb', line 125

def override_streaming_reporter
  require "sentry/rails/overrides/streaming_reporter"

  ActiveSupport.on_load :action_view do
    ActionView::StreamingTemplateRenderer::Body.send(:prepend, Sentry::Rails::Overrides::StreamingReporter)
  end
end

#patch_background_workerObject



99
100
101
# File 'lib/sentry/rails/railtie.rb', line 99

def patch_background_worker
  require "sentry/rails/background_worker"
end

#register_error_subscriber(app) ⇒ Object



148
149
150
151
# File 'lib/sentry/rails/railtie.rb', line 148

def register_error_subscriber(app)
  require "sentry/rails/error_subscriber"
  app.executor.error_reporter.subscribe(Sentry::Rails::ErrorSubscriber.new)
end

#setup_backtrace_cleanup_callbackObject



117
118
119
120
121
122
123
# File 'lib/sentry/rails/railtie.rb', line 117

def setup_backtrace_cleanup_callback
  backtrace_cleaner = Sentry::Rails::BacktraceCleaner.new

  Sentry.configuration.backtrace_cleanup_callback ||= lambda do |backtrace|
    backtrace_cleaner.clean(backtrace)
  end
end