Class: Fractor::Workflow::FilePersister

Inherits:
Object
  • Object
show all
Defined in:
lib/fractor/workflow/dead_letter_queue.rb

Overview

File-based persistence for dead letter queue

Instance Method Summary collapse

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

#clearObject



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.timestamp.iso8601 }
    save_entries(entries)
  end
end