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