Sha256: ad1343b18fb5622d2d0e99c07ed76482f6a93bbcf39e2c73094990d4d4c22ee4

Contents?: true

Size: 975 Bytes

Versions: 3

Compression:

Stored size: 975 Bytes

Contents

class TestTrack::UnsyncedAssignmentsNotifier
  attr_reader :visitor_id, :assignments

  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

  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

  private

  def assignment_job_args(assignment)
    {
      visitor_id: visitor_id,
      context: assignment.context,
      split_name: assignment.split_name,
      variant: assignment.variant
    }
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
test_track_rails_client-6.0.0 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-5.0.1 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-5.0.0 app/models/test_track/unsynced_assignments_notifier.rb