class ExperimentLight::Experiment

Public Class Methods

delete(experiment) click to toggle source
# File lib/experiment_light/experiment.rb, line 25
def delete(experiment)
  experiment_feature_data

  @experiment_data.delete(experiment) if valid_feature_name?(experiment)

  save_to_yaml
end
experiment_feature_data() click to toggle source
# File lib/experiment_light/experiment.rb, line 3
def experiment_feature_data
  @experiment_data ||= load(experiment_file_name)
end
off?(experiment, env=Rails.env) click to toggle source
# File lib/experiment_light/experiment.rb, line 13
def off?(experiment, env=Rails.env)
  !on?(experiment, env)
end
on?(experiment, env=Rails.env) click to toggle source
# File lib/experiment_light/experiment.rb, line 7
def on?(experiment, env=Rails.env)
  experiment_feature_data

  @experiment_data[experiment][env] if valid_feature_name_and_env?(experiment, env)
end
update(experiment, env, value) click to toggle source
# File lib/experiment_light/experiment.rb, line 17
def update(experiment, env, value)
  experiment_feature_data

  @experiment_data[experiment][env] = value if valid_feature_name_and_env?(experiment, env)

  save_to_yaml
end

Private Class Methods

experiment_file_name() click to toggle source
# File lib/experiment_light/experiment.rb, line 34
def experiment_file_name
  'experiment.yml'
end
file_path(file_name) click to toggle source
# File lib/experiment_light/experiment.rb, line 38
def file_path(file_name)
  Rails.root.join('config', file_name)
end
load(file_name) click to toggle source
# File lib/experiment_light/experiment.rb, line 42
def load(file_name)
  HashWithIndifferentAccess.new(YAML::load(File.open(file_path(file_name))))
end
reload!() click to toggle source
# File lib/experiment_light/experiment.rb, line 46
def reload!
  @experiment_data = load(experiment_file_name)
end
save_to_yaml() click to toggle source
# File lib/experiment_light/experiment.rb, line 50
def save_to_yaml
  File.open(file_path(experiment_file_name), 'w') do |f|
    f.puts @experiment_data.to_hash.to_yaml
  end

  true
end
valid_feature_name?(experiment) click to toggle source
# File lib/experiment_light/experiment.rb, line 58
def valid_feature_name?(experiment)
  reload! unless @experiment_data.has_key?(experiment)

  unless @experiment_data.has_key?(experiment)
    raise "Cannot find experiment '#{experiment}', check out your #{experiment_file_name} file"
  end

  true
end
valid_feature_name_and_env?(experiment, env=Rails.env) click to toggle source
# File lib/experiment_light/experiment.rb, line 68
def valid_feature_name_and_env?(experiment, env=Rails.env)
  valid_feature_name?(experiment)

  unless @experiment_data[experiment].has_key?(env)
    raise "Cannot find environment '#{env}' for experiment '#{experiment}', check out your #{experiment_file_name} file"
  end

  true
end