lib/tasks/cookie.rake
require 'rake'
require 'eeny-meeny/models/cookie'
require 'eeny-meeny/models/experiment'
def write_cookie(experiment_id, variation_id: nil)
experiment = EenyMeeny::Experiment.find_by_id(experiment_id)
raise "Experiment with id '#{experiment_id}' not found!" if experiment.nil?
if variation_id.nil?
EenyMeeny::Cookie.create_for_experiment(experiment, EenyMeeny.config.cookies)
else
EenyMeeny::Cookie.create_for_experiment_variation(experiment, variation_id, EenyMeeny.config.cookies)
end
end
namespace :eeny_meeny do
namespace :cookie do
desc 'Create a valid EenyMeeny experiment cookie'
task :experiment, [:experiment_id] => :environment do |_, args|
raise "Missing 'experiment_id' parameter" if (args['experiment_id'].nil? || args['experiment_id'].empty?)
experiment_id = args['experiment_id'].to_sym
cookie = write_cookie(experiment_id)
puts cookie
end
desc 'Create a valid EenyMeeny experiment cookie for a specific variation'
task :experiment_variation, [:experiment_id, :variation_id] => :environment do |_, args|
raise "Missing 'experiment_id' parameter" if (args['experiment_id'].nil? || args['experiment_id'].empty?)
raise "Missing 'variation_id' parameter" if (args['variation_id'].nil? || args['variation_id'].empty?)
experiment_id = args['experiment_id'].to_sym
variation_id = args['variation_id'].to_sym
cookie = write_cookie(experiment_id, variation_id: variation_id)
puts cookie
end
desc 'Create a valid EenyMeeny smoke test cookie'
task :smoke_test, [:smoke_test_id, :version] => :environment do |_, args|
raise "Missing 'smoke_test_id' parameter" if (args['smoke_test_id'].nil? || args['smoke_test_id'].empty?)
smoke_test_id = args['smoke_test_id']
version = args['version'] || 1
cookie = EenyMeeny::Cookie.create_for_smoke_test(smoke_test_id, **EenyMeeny.config.cookies.merge(version: version))
puts cookie
end
end
end