Class: Whodunit::Chronicles::LedgerFactory
- Inherits:
-
Object
- Object
- Whodunit::Chronicles::LedgerFactory
- Defined in:
- lib/whodunit/chronicles/ledger_factory.rb
Overview
Builds ledger instances from simple configuration hashes.
Class Method Summary collapse
-
.build(config) ⇒ Ledger
Build a ledger from configuration.
Instance Method Summary collapse
-
#build ⇒ Ledger
Build the configured ledger.
-
#initialize(config) ⇒ LedgerFactory
constructor
Create a factory.
Constructor Details
#initialize(config) ⇒ LedgerFactory
Create a factory.
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.
16 17 18 |
# File 'lib/whodunit/chronicles/ledger_factory.rb', line 16 def self.build(config) new(config).build end |
Instance Method Details
#build ⇒ Ledger
Build the 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 |