Sha256: 0f07be181acbaac947ad6c039ea0aed439d54d19841f9bb85cfe234f9574e1f6

Contents?: true

Size: 1 KB

Versions: 12

Compression:

Stored size: 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
          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

12 entries across 12 versions & 1 rubygems

Version Path
test_track_rails_client-0.9.11 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.10 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.9 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.8 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.7 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.6 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.5 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.4 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.3 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.2 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.1 app/models/test_track/unsynced_assignments_notifier.rb
test_track_rails_client-0.9.0 app/models/test_track/unsynced_assignments_notifier.rb