Sha256: def04317aa502be68af2167c3c2d4446eb075da0f36ae7ed74953faf748cf736

Contents?: true

Size: 850 Bytes

Versions: 3

Compression:

Stored size: 850 Bytes

Contents

# frozen_string_literal: true

module Split
  class GoalsCollection
    def initialize(experiment_name, goals = nil)
      @experiment_name = experiment_name
      @goals = goals
    end

    def load_from_redis
      Split.redis.lrange(goals_key, 0, -1)
    end

    def load_from_configuration
      goals = Split.configuration.experiment_for(@experiment_name)[:goals]

      if goals
        goals.flatten
      else
        []
      end
    end

    def save
      return false if @goals.nil?
      RedisInterface.new.persist_list(goals_key, @goals)
    end

    def validate!
      unless @goals.nil? || @goals.kind_of?(Array)
        raise ArgumentError, "Goals must be an array"
      end
    end

    def delete
      Split.redis.del(goals_key)
    end

    private
      def goals_key
        "#{@experiment_name}:goals"
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
split-4.0.4 lib/split/goals_collection.rb
split-4.0.3 lib/split/goals_collection.rb
split-4.0.2 lib/split/goals_collection.rb