Class: ChangeSync

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document
Defined in:
lib/trogdir/change_sync.rb

Instance Method Summary collapse

Instance Method Details

#latest_sync_logObject



23
24
25
# File 'lib/trogdir/change_sync.rb', line 23

def latest_sync_log
  sync_logs.asc(:started_at).last
end

#statusObject



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/trogdir/change_sync.rb', line 11

def status
  @status ||= if sync_logs.any? { |sl| sl.succeeded_at? }
    :succeeded
  elsif sync_logs.to_a.find { |sl| sl.errored_at? }
    :errored
  elsif sync_logs.to_a.find { |sl| sl.started_at? }
    :pending
  else
    :unsynced
  end
end

#update_run_afterObject



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/trogdir/change_sync.rb', line 27

def update_run_after
  self.run_after = if sync_logs.any? { |sl| sl.succeeded_at_changed? }
    nil
  elsif sync_logs.to_a.find { |sl| sl.errored_at_changed? }
    # wait exponentially longer between retries the more it fails
    latest_sync_log.errored_at + (sync_logs.length**4).minutes
  elsif sync_logs.to_a.find { |sl| sl.started_at_changed? }
    latest_sync_log.started_at + 1.hour
  else
    run_after
  end
end