Class: Whodunit::Chronicles::LedgerFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/whodunit/chronicles/ledger_factory.rb

Overview

Builds ledger instances from simple configuration hashes.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ LedgerFactory

Create a factory.

Parameters:

  • config (Hash)

    configuration hash



23
24
25
# File 'lib/whodunit/chronicles/ledger_factory.rb', line 23

def initialize(config)
  @config = stringify_keys(config)
end

Class Method Details

.build(config) ⇒ Ledger

Build a ledger from configuration.

Parameters:

  • config (Hash)

    configuration hash

Returns:

  • (Ledger)

    configured ledger



16
17
18
# File 'lib/whodunit/chronicles/ledger_factory.rb', line 16

def self.build(config)
  new(config).build
end

Instance Method Details

#buildLedger

Build the configured ledger.

Returns:

  • (Ledger)

    configured ledger



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/whodunit/chronicles/ledger_factory.rb', line 30

def build
  ledger = stringify_keys(@config.fetch('ledger', @config))
  adapter = required_value(ledger, 'adapter')

  case adapter
  when 'memory'
    Ledgers::MemoryLedger.new
  when 'file'
    Ledgers::FileLedger.new(path: required_value(ledger, 'path'))
  when 'sqlite'
    Ledgers::SQLiteLedger.new(path: required_value(ledger, 'path'), table_name: ledger.fetch('table_name', Ledgers::SQLiteLedger::DEFAULT_TABLE))
  else
    raise ConfigurationError, "unsupported ledger adapter: #{adapter.inspect}"
  end
end