Sha256: aac007897771dd5246be98dddc6db56340b1a2d0683c86c9124fe09e7276c9fc

Contents?: true

Size: 1.1 KB

Versions: 14

Compression:

Stored size: 1.1 KB

Contents

class TestTrack::UnsyncedAssignmentsNotifier
  attr_reader :mixpanel_distinct_id, :visitor_id, :assignments

  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

  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

  private

  def build_notify_assignment_job(assignment)
    TestTrack::NotifyAssignmentJob.new(
      mixpanel_distinct_id: mixpanel_distinct_id,
      visitor_id: visitor_id,
      assignment: assignment
    )
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
test_track_rails_client-2.0.0 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-1.3.0 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-1.2.0 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-1.1.0 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-1.0.0 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.20 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.19 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.18 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.17 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.16 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.15 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.14 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.13 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.12 app/models/test_track/unsynced_assignments_notifier.rb