Class: TestTrack::UnsyncedAssignmentsNotifier

Inherits:
Object
  • Object
show all
Defined in:
app/models/test_track/unsynced_assignments_notifier.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ UnsyncedAssignmentsNotifier

Returns a new instance of UnsyncedAssignmentsNotifier.



4
5
6
7
8
9
10
11
12
# File 'app/models/test_track/unsynced_assignments_notifier.rb', line 4

def initialize(opts)
  @visitor_id = opts.delete(:visitor_id)
  @assignments = opts.delete(:assignments)

  %w(visitor_id assignments).each do |param_name|
    raise "#{param_name} must be present" if send(param_name).blank?
  end
  raise "unknown opts: #{opts.keys.to_sentence}" if opts.present?
end

Instance Attribute Details

#assignmentsObject (readonly)

Returns the value of attribute assignments.



2
3
4
# File 'app/models/test_track/unsynced_assignments_notifier.rb', line 2

def assignments
  @assignments
end

#visitor_idObject (readonly)

Returns the value of attribute visitor_id.



2
3
4
# File 'app/models/test_track/unsynced_assignments_notifier.rb', line 2

def visitor_id
  @visitor_id
end

Instance Method Details

#notifyObject



14
15
16
17
18
19
20
21
# File 'app/models/test_track/unsynced_assignments_notifier.rb', line 14

def notify
  assignments.each do |assignment|
    TestTrack::AssignmentEventJob.perform_now(**assignment_job_args(assignment))
  rescue *TestTrack::SERVER_ERRORS => e
    Rails.logger.error "TestTrack failed to notify unsynced assignments, retrying. #{e}"
    TestTrack::AssignmentEventJob.perform_later(**assignment_job_args(assignment))
  end
end