Class: Sentiero::Store::Limits

Inherits:
Object
  • Object
show all
Defined in:
lib/sentiero/store/limits.rb

Overview

Eviction/scan caps for a store, held by the store itself instead of read from the global Sentiero.configuration. Build one explicitly, or derive the configured defaults at the composition root with .from_configuration.

Constant Summary collapse

DEFAULTS =
{
  max_events_per_session: nil,
  max_sessions: nil,
  max_problems: 5_000,
  max_server_events: 50_000,
  analytics_max_scan_sessions: 5_000
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**overrides) ⇒ Limits

Returns a new instance of Limits.

Raises:

  • (ArgumentError)


23
24
25
26
27
28
# File 'lib/sentiero/store/limits.rb', line 23

def initialize(**overrides)
  unknown = overrides.keys - DEFAULTS.keys
  raise ArgumentError, "unknown limit(s): #{unknown.join(", ")}" unless unknown.empty?

  DEFAULTS.merge(overrides).each { |attr, value| instance_variable_set(:"@#{attr}", value) }
end

Class Method Details

.from_configuration(config = Sentiero.configuration) ⇒ Object



17
18
19
# File 'lib/sentiero/store/limits.rb', line 17

def self.from_configuration(config = Sentiero.configuration)
  new(**DEFAULTS.keys.to_h { |attr| [attr, config.public_send(attr)] })
end