Class: BetterService::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/better_service/configuration.rb

Overview

Configuration - Centralized configuration for BetterService

Provides configuration options for various BetterService features.

Examples:

Configure in initializer

# config/initializers/better_service.rb
BetterService.configure do |config|
  config.instrumentation_enabled = true
  config.instrumentation_include_args = false
  config.instrumentation_excluded_services = ["HealthCheckService"]

  # Cache invalidation map for cascading cache invalidation
  config.cache_invalidation_map = {
    'products' => %w[products inventory reports],
    'orders' => %w[orders products reports],
    'users' => %w[users orders reports]
  }
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/better_service/configuration.rb', line 100

def initialize
  # Instrumentation defaults
  @instrumentation_enabled = true
  @instrumentation_include_args = true
  @instrumentation_include_result = false
  @instrumentation_excluded_services = []

  # Built-in subscribers defaults
  @log_subscriber_enabled = false
  @log_subscriber_level = :info
  @stats_subscriber_enabled = false

  # Cache defaults
  @cache_invalidation_map = {}
end

Instance Attribute Details

#cache_invalidation_mapHash<String, Array<String>>

Cache invalidation map for cascading cache invalidation

When a context is invalidated, all related contexts in the map are also invalidated automatically.

Examples:

config.cache_invalidation_map = {
  'products' => %w[products inventory reports],
  'orders' => %w[orders products reports]
}

Returns:

  • (Hash<String, Array<String>>)

    Default: {}



87
88
89
# File 'lib/better_service/configuration.rb', line 87

def cache_invalidation_map
  @cache_invalidation_map
end

#instrumentation_enabledBoolean

Enable/disable instrumentation globally

When disabled, no events will be published for any service.

Returns:

  • (Boolean)

    Default: true



28
29
30
# File 'lib/better_service/configuration.rb', line 28

def instrumentation_enabled
  @instrumentation_enabled
end

#instrumentation_excluded_servicesArray<String>

List of service class names to exclude from instrumentation

Services in this list will not publish any events. Useful for high-frequency services that would generate too many events.

Returns:

  • (Array<String>)

    Default: []



52
53
54
# File 'lib/better_service/configuration.rb', line 52

def instrumentation_excluded_services
  @instrumentation_excluded_services
end

#instrumentation_include_argsBoolean

Include service arguments in event payloads

When enabled, args and kwargs are included in event payloads. Disable if arguments contain sensitive data (passwords, tokens, etc.)

Returns:

  • (Boolean)

    Default: true



36
37
38
# File 'lib/better_service/configuration.rb', line 36

def instrumentation_include_args
  @instrumentation_include_args
end

#instrumentation_include_resultBoolean

Include service result in event payloads

When enabled, the service result is included in completion events. Disable to reduce payload size or protect sensitive return values.

Returns:

  • (Boolean)

    Default: false



44
45
46
# File 'lib/better_service/configuration.rb', line 44

def instrumentation_include_result
  @instrumentation_include_result
end

#log_subscriber_enabledBoolean

Enable/disable built-in log subscriber

When enabled, all service events are logged to Rails.logger.

Returns:

  • (Boolean)

    Default: false



59
60
61
# File 'lib/better_service/configuration.rb', line 59

def log_subscriber_enabled
  @log_subscriber_enabled
end

#log_subscriber_levelSymbol

Log level for built-in log subscriber

Valid values: :debug, :info, :warn, :error

Returns:

  • (Symbol)

    Default: :info



66
67
68
# File 'lib/better_service/configuration.rb', line 66

def log_subscriber_level
  @log_subscriber_level
end

#stats_subscriber_enabledBoolean

Enable/disable built-in stats subscriber

When enabled, statistics are collected for all service executions.

Returns:

  • (Boolean)

    Default: false



73
74
75
# File 'lib/better_service/configuration.rb', line 73

def stats_subscriber_enabled
  @stats_subscriber_enabled
end