Class: Philiprehberger::AuditTrail::MemoryStore
- Inherits:
-
Object
- Object
- Philiprehberger::AuditTrail::MemoryStore
- Defined in:
- lib/philiprehberger/audit_trail/memory_store.rb
Overview
Thread-safe in-memory storage for audit events.
Instance Method Summary collapse
-
#all ⇒ Array<Event>
Return all stored events.
-
#clear! ⇒ void
Remove all events from the store.
-
#initialize ⇒ MemoryStore
constructor
A new instance of MemoryStore.
-
#push(event) ⇒ Event
Append an event to the store.
-
#push_all(events) ⇒ Array<Event>
Append multiple events to the store.
-
#reject! {|Event| ... } ⇒ Array<Event>
Remove events matching the block.
-
#select {|Event| ... } ⇒ Array<Event>
Filter events using a block.
-
#size ⇒ Integer
Return the number of stored events.
Constructor Details
#initialize ⇒ MemoryStore
Returns a new instance of MemoryStore.
7 8 9 10 |
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 7 def initialize @events = [] @mutex = Mutex.new end |
Instance Method Details
#all ⇒ Array<Event>
Return all stored events.
32 33 34 |
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 32 def all @mutex.synchronize { @events.dup } end |
#clear! ⇒ void
This method returns an undefined value.
Remove all events from the store.
39 40 41 |
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 39 def clear! @mutex.synchronize { @events.clear } end |
#push(event) ⇒ Event
Append an event to the store.
16 17 18 19 |
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 16 def push(event) @mutex.synchronize { @events << event } event end |
#push_all(events) ⇒ Array<Event>
Append multiple events to the store.
47 48 49 50 |
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 47 def push_all(events) @mutex.synchronize { @events.concat(events) } events end |
#reject! {|Event| ... } ⇒ Array<Event>
Remove events matching the block.
56 57 58 |
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 56 def reject!(&block) @mutex.synchronize { @events.reject!(&block) } end |
#select {|Event| ... } ⇒ Array<Event>
Filter events using a block.
25 26 27 |
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 25 def select(&block) @mutex.synchronize { @events.select(&block) } end |
#size ⇒ Integer
Return the number of stored events.
63 64 65 |
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 63 def size @mutex.synchronize { @events.size } end |