Sha256: 6a706fc840186555fa8b964d4f29a46e27738608527fb26a1afb5071a8584658

Contents?: true

Size: 841 Bytes

Versions: 10

Compression:

Stored size: 841 Bytes

Contents

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.nil?
        goals = []
      else
        goals.flatten
      end
    end

    def save
      return false if @goals.nil?
      @goals.reverse.each { |goal| Split.redis.lpush(goals_key, goal) }
    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

10 entries across 10 versions & 1 rubygems

Version Path
split-2.1.0 lib/split/goals_collection.rb
split-2.0.0 lib/split/goals_collection.rb
split-1.7.0 lib/split/goals_collection.rb
split-1.6.0 lib/split/goals_collection.rb
split-1.5.0 lib/split/goals_collection.rb
split-1.4.5 lib/split/goals_collection.rb
split-1.4.4 lib/split/goals_collection.rb
split-1.4.3 lib/split/goals_collection.rb
split-1.4.2 lib/split/goals_collection.rb
split-1.4.1 lib/split/goals_collection.rb