Module: Lapsoss
- Defined in:
- lib/lapsoss.rb,
lib/lapsoss/event.rb,
lib/lapsoss/scope.rb,
lib/lapsoss/client.rb,
lib/lapsoss/router.rb,
lib/lapsoss/current.rb,
lib/lapsoss/railtie.rb,
lib/lapsoss/version.rb,
lib/lapsoss/pipeline.rb,
lib/lapsoss/registry.rb,
lib/lapsoss/scrubber.rb,
lib/lapsoss/breadcrumb.rb,
lib/lapsoss/validators.rb,
lib/lapsoss/http_client.rb,
lib/lapsoss/merged_scope.rb,
lib/lapsoss/adapters/base.rb,
lib/lapsoss/configuration.rb,
lib/lapsoss/fingerprinter.rb,
lib/lapsoss/sampling/base.rb,
lib/lapsoss/backtrace_frame.rb,
lib/lapsoss/middleware/base.rb,
lib/lapsoss/release_tracker.rb,
lib/lapsoss/runtime_context.rb,
lib/lapsoss/exclusion_filter.rb,
lib/lapsoss/pipeline_builder.rb,
lib/lapsoss/backtrace_processor.rb,
lib/lapsoss/adapters/otlp_adapter.rb,
lib/lapsoss/sampling/rate_limiter.rb,
lib/lapsoss/rails_error_subscriber.rb,
lib/lapsoss/rails_event_subscriber.rb,
lib/lapsoss/adapters/logger_adapter.rb,
lib/lapsoss/adapters/sentry_adapter.rb,
lib/lapsoss/backtrace_frame_factory.rb,
lib/lapsoss/middleware/rate_limiter.rb,
lib/lapsoss/adapters/bugsnag_adapter.rb,
lib/lapsoss/adapters/rollbar_adapter.rb,
lib/lapsoss/middleware/sample_filter.rb,
lib/lapsoss/rails_controller_context.rb,
lib/lapsoss/sampling/uniform_sampler.rb,
lib/lapsoss/adapters/telebugs_adapter.rb,
lib/lapsoss/exception_backtrace_frame.rb,
lib/lapsoss/middleware/event_enricher.rb,
lib/lapsoss/adapters/appsignal_adapter.rb,
lib/lapsoss/middleware/release_tracker.rb,
lib/lapsoss/middleware/exception_filter.rb,
lib/lapsoss/adapters/insight_hub_adapter.rb,
lib/lapsoss/adapters/openobserve_adapter.rb,
lib/lapsoss/middleware/event_transformer.rb,
lib/lapsoss/middleware/metrics_collector.rb,
lib/lapsoss/rails_controller_transaction.rb,
lib/lapsoss/middleware/conditional_filter.rb,
lib/lapsoss/adapters/concerns/http_delivery.rb,
lib/lapsoss/adapters/concerns/level_mapping.rb,
lib/lapsoss/adapters/concerns/trace_context.rb,
lib/lapsoss/middleware/user_context_enhancer.rb,
lib/lapsoss/adapters/concerns/envelope_builder.rb,
lib/lapsoss/adapters/concerns/stacktrace_builder.rb
Defined Under Namespace
Modules: Adapters, Breadcrumb, Middleware, RailsControllerContext, RailsControllerTransaction, Sampling, Validators
Classes: BacktraceFrame, BacktraceFrameFactory, BacktraceProcessor, Client, Configuration, Current, DeliveryError, Error, Event, ExceptionBacktraceFrame, ExclusionFilter, Fingerprinter, HttpClient, MergedScope, Pipeline, PipelineBuilder, RailsErrorSubscriber, RailsEventSubscriber, Railtie, Registry, ReleaseTracker, Router, RuntimeContext, Scope, Scrubber
Constant Summary
collapse
- VERSION =
"1.0.0"
Class Attribute Summary collapse
Class Method Summary
collapse
-
.add_breadcrumb(message, type: :default, **metadata) ⇒ Object
-
.call_error_handler(adapter:, event:, error:) ⇒ Object
-
.capture_exception(exception, **context) ⇒ Object
-
.capture_message(message, level: :info, **context) ⇒ Object
-
.configuration ⇒ Object
-
.configure {|configuration| ... } ⇒ Object
-
.flush(timeout: 2) ⇒ Object
-
.handle(error_class = StandardError, fallback: nil, **context) ⇒ Object
Handle errors and swallow them (like Rails.error.handle).
-
.record(error_class = StandardError, **context) ⇒ Object
Record errors and re-raise them (like Rails.error.record).
-
.report(exception, handled: true, **context) ⇒ Object
Report an error manually (like Rails.error.report).
-
.silence ⇒ Object
Suppress all event capture for the duration of the block (thread-local).
-
.silenced? ⇒ Boolean
-
.with_scope(context = {}) ⇒ Object
Class Attribute Details
.client ⇒ Object
Returns the value of attribute client.
26
27
28
|
# File 'lib/lapsoss.rb', line 26
def client
@client
end
|
Class Method Details
.add_breadcrumb(message, type: :default, **metadata) ⇒ Object
86
87
88
|
# File 'lib/lapsoss.rb', line 86
def add_breadcrumb(message, type: :default, **metadata)
client.add_breadcrumb(message, type: type, **metadata)
end
|
.call_error_handler(adapter:, event:, error:) ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/lapsoss.rb', line 100
def call_error_handler(adapter:, event:, error:)
handler = configuration.error_handler
return unless handler
case handler.arity
when 3
handler.call(adapter, event, error)
when 2
handler.call(event, error)
when 1, 0, -1
handler.call(error)
else
handler.call(adapter, event, error)
end
rescue => handler_error
configuration.logger&.error("[LAPSOSS] Error handler failed: #{handler_error.message}")
end
|
.capture_exception(exception, **context) ⇒ Object
39
40
41
42
43
|
# File 'lib/lapsoss.rb', line 39
def capture_exception(exception, **context)
configuration.logger.debug "[LAPSOSS] capture_exception called for #{exception.class}"
return unless client
client.capture_exception(exception, **context)
end
|
.capture_message(message, level: :info, **context) ⇒ Object
45
46
47
|
# File 'lib/lapsoss.rb', line 45
def capture_message(message, level: :info, **context)
client.capture_message(message, level: level, **context)
end
|
.configuration ⇒ Object
28
29
30
|
# File 'lib/lapsoss.rb', line 28
def configuration
@configuration ||= Configuration.new
end
|
32
33
34
35
36
37
|
# File 'lib/lapsoss.rb', line 32
def configure
yield(configuration)
configuration.validate!
configuration.apply!
@client = Client.new(configuration)
end
|
.flush(timeout: 2) ⇒ Object
96
97
98
|
# File 'lib/lapsoss.rb', line 96
def flush(timeout: 2)
client.flush(timeout: timeout)
end
|
.handle(error_class = StandardError, fallback: nil, **context) ⇒ Object
Handle errors and swallow them (like Rails.error.handle)
52
53
54
55
56
57
|
# File 'lib/lapsoss.rb', line 52
def handle(error_class = StandardError, fallback: nil, **context)
yield
rescue error_class => e
capture_exception(e, **context.merge(handled: true))
fallback.respond_to?(:call) ? fallback.call : fallback
end
|
.record(error_class = StandardError, **context) ⇒ Object
Record errors and re-raise them (like Rails.error.record)
60
61
62
63
64
65
|
# File 'lib/lapsoss.rb', line 60
def record(error_class = StandardError, **context)
yield
rescue error_class => e
capture_exception(e, **context.merge(handled: false))
raise
end
|
.report(exception, handled: true, **context) ⇒ Object
Report an error manually (like Rails.error.report)
68
69
70
|
# File 'lib/lapsoss.rb', line 68
def report(exception, handled: true, **context)
capture_exception(exception, **context.merge(handled: handled))
end
|
.silence ⇒ Object
Suppress all event capture for the duration of the block (thread-local).
Breadcrumbs and scope still accumulate; only delivery is skipped.
74
75
76
77
78
79
80
|
# File 'lib/lapsoss.rb', line 74
def silence
previous = Current.silenced
Current.silenced = true
yield
ensure
Current.silenced = previous
end
|
.silenced? ⇒ Boolean
82
83
84
|
# File 'lib/lapsoss.rb', line 82
def silenced?
Current.silenced
end
|
.with_scope(context = {}) ⇒ Object
90
91
92
|
# File 'lib/lapsoss.rb', line 90
def with_scope(context = {}, &)
client.with_scope(context, &)
end
|