Class: MeterBox::Configuration

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

Overview

Mutation methods (meter, freeze!, reset!) require the caller to hold MeterBox’s Mutex. fetch is lock-free — @meters is never mutated after freeze!.

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



7
8
9
# File 'lib/meter_box/configuration.rb', line 7

def initialize
  reset!
end

Instance Method Details

#fetch(name) ⇒ Object



16
17
18
19
20
# File 'lib/meter_box/configuration.rb', line 16

def fetch(name)
  @meters.fetch(name.to_sym) do
    raise UnknownMeter, "no meter registered as '#{name}'"
  end
end

#freezeObject

Raises:

  • (NoMethodError)


26
27
28
# File 'lib/meter_box/configuration.rb', line 26

def freeze
  raise NoMethodError, "use MeterBox::Configuration#freeze! to lock the registry"
end

#freeze!Object



22
23
24
# File 'lib/meter_box/configuration.rb', line 22

def freeze!
  @frozen = true
end

#meter(name, dimensions: {}, aggregation: :sum) ⇒ Object



11
12
13
14
# File 'lib/meter_box/configuration.rb', line 11

def meter(name, dimensions: {}, aggregation: :sum)
  raise ConfigurationFrozen, "MeterBox configuration is frozen" if @frozen
  @meters[name.to_sym] = Meter.new(name: name, dimensions: dimensions, aggregation: aggregation)
end

#reset!Object



30
31
32
33
# File 'lib/meter_box/configuration.rb', line 30

def reset!
  @meters = {}
  @frozen = false
end