Class: MeterBox::Configuration
- Inherits:
-
Object
- Object
- MeterBox::Configuration
- 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
- #fetch(name) ⇒ Object
- #freeze ⇒ Object
- #freeze! ⇒ Object
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #meter(name, dimensions: {}, aggregation: :sum) ⇒ Object
- #reset! ⇒ Object
Constructor Details
#initialize ⇒ Configuration
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 |
#freeze ⇒ Object
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 |