Sha256: 6610783680a3bd04ffb6c768af162f3b30efab032053430193d20eafd3fed78a

Contents?: true

Size: 827 Bytes

Versions: 3

Compression:

Stored size: 827 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 analytics_event
    @analytics_event ||= AnalyticsEvent.new(self)
  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.alpha3 app/models/test_track/assignment.rb
test_track_rails_client-4.0.0.alpha2 app/models/test_track/assignment.rb
test_track_rails_client-4.0.0.alpha1 app/models/test_track/assignment.rb