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
13
# File 'app/models/test_track/unsynced_assignments_notifier.rb', line 4

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

  %w(visitor_id assignments).each do |param_name|
    raise "#{param_name} must be present" unless send(param_name).present?
  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

#mixpanel_distinct_idObject (readonly)

Returns the value of attribute mixpanel_distinct_id.



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

def mixpanel_distinct_id
  @mixpanel_distinct_id
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



15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/models/test_track/unsynced_assignments_notifier.rb', line 15

def notify
  assignments.each do |assignment|
    build_notify_assignment_job(assignment).tap do |job|
      begin
        job.perform
      rescue *TestTrack::SERVER_ERRORS => e
        Rails.logger.error "TestTrack failed to notify unsynced assignments, retrying. #{e}"
        Delayed::Job.enqueue(build_notify_assignment_job(assignment))
      end
    end
  end
end