Module: Vanity::Experiment::Definition
- Defined in:
- lib/vanity/experiment/definition.rb,
lib/vanity/experiment/ab_test.rb
Overview
These methods are available from experiment definitions (files located in the experiments directory, automatically loaded by Vanity). Use these methods to define your experiments, for example:
ab_test "New Banner" do
alternatives :red, :green, :blue
metrics :signup
end
Instance Attribute Summary collapse
-
#playground ⇒ Object
readonly
Returns the value of attribute playground.
Instance Method Summary collapse
-
#ab_test(name, &block) ⇒ Object
Define an A/B test with the given name.
-
#define(name, type, options = nil, &block) ⇒ Object
Defines a new experiment, given the experiment’s name, type and definition block.
- #new_binding(playground, id) ⇒ Object
Instance Attribute Details
#playground ⇒ Object (readonly)
Returns the value of attribute playground.
11 12 13 |
# File 'lib/vanity/experiment/definition.rb', line 11 def playground @playground end |
Instance Method Details
#ab_test(name, &block) ⇒ Object
Define an A/B test with the given name. For example:
ab_test "New Banner" do
alternatives :red, :green, :blue
end
717 718 719 |
# File 'lib/vanity/experiment/ab_test.rb', line 717 def ab_test(name, &block) define name, :ab_test, &block end |
#define(name, type, options = nil, &block) ⇒ Object
Defines a new experiment, given the experiment’s name, type and definition block.
15 16 17 18 19 20 21 22 23 |
# File 'lib/vanity/experiment/definition.rb', line 15 def define(name, type, = nil, &block) raise "Experiment #{@experiment_id} already defined in playground" if playground.experiments[@experiment_id] klass = Experiment.const_get(type.to_s.gsub(/\/(.?)/) { "::#{Regexp.last_match(1).upcase}" }.gsub(/(?:^|_)(.)/) { Regexp.last_match(1).upcase }) experiment = klass.new(playground, @experiment_id, name, ) experiment.instance_eval(&block) experiment.save playground.experiments[@experiment_id] = experiment end |
#new_binding(playground, id) ⇒ Object
25 26 27 28 29 |
# File 'lib/vanity/experiment/definition.rb', line 25 def new_binding(playground, id) @playground = playground @experiment_id = id binding end |