diff --git a/lib/scientist/experiment.rb b/lib/scientist/experiment.rb index f48b339..31fc015 100644 --- a/lib/scientist/experiment.rb +++ b/lib/scientist/experiment.rb @@ -10,10 +10,15 @@ module Scientist::Experiment attr_accessor :raise_on_mismatches def self.included(base) - self.set_default(base) if base.instance_of?(Class) + set_default(base) if base.instance_of?(Class) base.extend RaiseOnMismatch end + # Set this class as default scientist experiment when included. + def self.set_as_default_scientist_experiment(set_default_class) + set_default(Scientist::Default) unless set_default_class + end + # Instantiate a new experiment (using the class given to the .set_default method). def self.new(name) (@experiment_klass || Scientist::Default).new(name) diff --git a/test/scientist/experiment_test.rb b/test/scientist/experiment_test.rb index 12462f6..e0cf869 100644 --- a/test/scientist/experiment_test.rb +++ b/test/scientist/experiment_test.rb @@ -31,6 +31,19 @@ def publish(result) @ex = Fake.new end + it "does not set as default when default_scientist_experiment is passed as false" do + klass = Class.new do + include Scientist::Experiment + + Scientist::Experiment.set_as_default_scientist_experiment(false) + + def initialize(name) + end + end + + assert_kind_of Scientist::Default, Scientist::Experiment.new("hello") + end + it "sets the default on inclusion" do klass = Class.new do include Scientist::Experiment
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: