Sha256: 41448eb324f2c903d39c580765c078eaf872abb1cd7bdf29477d2363fe368891

Contents?: true

Size: 748 Bytes

Versions: 3

Compression:

Stored size: 748 Bytes

Contents

class TestTrack::Assignment
  include TestTrack::RequiredOptions

  attr_accessor :context
  attr_reader :visitor, :split_name
  attr_writer :variant

  def initialize(opts = {})
    @visitor = require_option!(opts, :visitor)
    @split_name = require_option!(opts, :split_name).to_s
    raise ArgumentError, "unknown opts: #{opts.keys.to_sentence}" if opts.present?
  end

  def variant
    @variant ||= _variant
  end

  def unsynced?
    true
  end

  def feature_gate?
    split_name.end_with?('_enabled')
  end

  def visitor_id
    visitor.id
  end

  private

  def _variant
    return if visitor.offline?
    variant = TestTrack::VariantCalculator.new(visitor: visitor, split_name: split_name).variant
    variant && variant.to_s
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
test_track_rails_client-4.0.0.alpha8 app/models/test_track/assignment.rb
test_track_rails_client-4.0.0.alpha7 app/models/test_track/assignment.rb
test_track_rails_client-4.0.0.alpha6 app/models/test_track/assignment.rb