Class: Fractor::Workflow::FilePersister
- Inherits:
-
Object
- Object
- Fractor::Workflow::FilePersister
- Defined in:
- lib/fractor/workflow/dead_letter_queue.rb
Overview
File-based persistence for dead letter queue
Instance Method Summary collapse
- #clear ⇒ Object
-
#initialize(file_path: "dead_letter_queue.json") ⇒ FilePersister
constructor
A new instance of FilePersister.
- #persist(entry) ⇒ Object
- #remove(entry) ⇒ Object
Constructor Details
#initialize(file_path: "dead_letter_queue.json") ⇒ FilePersister
Returns a new instance of FilePersister.
292 293 294 295 |
# File 'lib/fractor/workflow/dead_letter_queue.rb', line 292 def initialize(file_path: "dead_letter_queue.json") @file_path = file_path @mutex = Mutex.new end |
Instance Method Details
#clear ⇒ Object
313 314 315 316 317 |
# File 'lib/fractor/workflow/dead_letter_queue.rb', line 313 def clear @mutex.synchronize do File.delete(@file_path) if File.exist?(@file_path) end end |
#persist(entry) ⇒ Object
297 298 299 300 301 302 303 |
# File 'lib/fractor/workflow/dead_letter_queue.rb', line 297 def persist(entry) @mutex.synchronize do entries = load_entries entries << entry.to_h save_entries(entries) end end |
#remove(entry) ⇒ Object
305 306 307 308 309 310 311 |
# File 'lib/fractor/workflow/dead_letter_queue.rb', line 305 def remove(entry) @mutex.synchronize do entries = load_entries entries.reject! { |e| e[:timestamp] == entry..iso8601 } save_entries(entries) end end |