split 1.7.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +1 -1
- data/lib/split/encapsulated_helper.rb +1 -6
- data/lib/split/helper.rb +4 -14
- data/lib/split/version.rb +2 -2
- data/spec/goals_collection_spec.rb +2 -2
- data/spec/helper_spec.rb +14 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 979183911b308ee1272e4d98e1bd0b8c87be732d
|
4
|
+
data.tar.gz: 8a4e49e77326cd94165f551b5e2080eaff78f053
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a990656f1a7342d069565c5ed6723577b915f77df5000e2d2fd8623105f060d2e079af2ded60d9b3b46120316db35a2c2ed1d88a68218e68784797ae83c4b9e1
|
7
|
+
data.tar.gz: 8c8ce0354d575b9b212c997753200b00e22eb9d379617303e3b95e14717a118182d238bd4141c0a1c9e4411e3066f503174462bac5253a35c8e19960d408f120
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -136,7 +136,7 @@ You can do this by passing it as a parameter in the url.
|
|
136
136
|
|
137
137
|
If you have an experiment called `button_color` with alternatives called `red` and `blue` used on your homepage, a url such as:
|
138
138
|
|
139
|
-
http://myawesomesite.com?button_color=red
|
139
|
+
http://myawesomesite.com?ab_test[button_color]=red
|
140
140
|
|
141
141
|
will always have red buttons. This won't be stored in your session or count towards to results, unless you set the `store_override` configuration option.
|
142
142
|
|
@@ -15,7 +15,7 @@ module Split
|
|
15
15
|
|
16
16
|
class ContextShim
|
17
17
|
include Split::Helper
|
18
|
-
public :ab_test, :
|
18
|
+
public :ab_test, :ab_finished
|
19
19
|
|
20
20
|
def initialize(context)
|
21
21
|
@context = context
|
@@ -43,11 +43,6 @@ module Split
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
def ab_test_finished(*arguments)
|
47
|
-
warn 'DEPRECATION WARNING: ab_test_finished is deprecated and will be removed from Split 2.0.0'
|
48
|
-
split_context_shim.finished *arguments
|
49
|
-
end
|
50
|
-
|
51
46
|
private
|
52
47
|
|
53
48
|
# instantiate and memoize a context shim in case of multiple ab_test* calls
|
data/lib/split/helper.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module Split
|
3
3
|
module Helper
|
4
|
+
OVERRIDE_PARAM_NAME = "ab_test"
|
5
|
+
|
4
6
|
module_function
|
5
7
|
|
6
8
|
def ab_test(metric_descriptor, control = nil, *alternatives)
|
@@ -74,30 +76,18 @@ module Split
|
|
74
76
|
Split.configuration.db_failover_on_db_error.call(e)
|
75
77
|
end
|
76
78
|
|
77
|
-
def finished(metric_descriptor, options = {:reset => true})
|
78
|
-
warn 'DEPRECATION WARNING: finished method was renamed to ab_finished and will be removed in Split 2.0.0'
|
79
|
-
ab_finished(metric_descriptor, options)
|
80
|
-
end
|
81
|
-
|
82
79
|
def override_present?(experiment_name)
|
83
|
-
|
80
|
+
override_alternative(experiment_name)
|
84
81
|
end
|
85
82
|
|
86
83
|
def override_alternative(experiment_name)
|
87
|
-
params[
|
84
|
+
defined?(params) && params[OVERRIDE_PARAM_NAME] && params[OVERRIDE_PARAM_NAME][experiment_name]
|
88
85
|
end
|
89
86
|
|
90
87
|
def split_generically_disabled?
|
91
88
|
defined?(params) && params['SPLIT_DISABLE']
|
92
89
|
end
|
93
90
|
|
94
|
-
def begin_experiment(experiment, alternative_name = nil)
|
95
|
-
warn 'DEPRECATION WARNING: begin_experiment is deprecated and will be removed from Split 2.0.0'
|
96
|
-
alternative_name ||= experiment.control.name
|
97
|
-
ab_user[experiment.key] = alternative_name
|
98
|
-
alternative_name
|
99
|
-
end
|
100
|
-
|
101
91
|
def ab_user
|
102
92
|
@ab_user ||= User.new(self)
|
103
93
|
end
|
data/lib/split/version.rb
CHANGED
@@ -24,7 +24,7 @@ describe Split::GoalsCollection do
|
|
24
24
|
describe "#validate!" do
|
25
25
|
it "should't raise ArgumentError if @goals is nil?" do
|
26
26
|
goals_collection = Split::GoalsCollection.new('experiment_name')
|
27
|
-
expect { goals_collection.validate! }.not_to raise_error
|
27
|
+
expect { goals_collection.validate! }.not_to raise_error
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should raise ArgumentError if @goals is not an Array" do
|
@@ -36,7 +36,7 @@ describe Split::GoalsCollection do
|
|
36
36
|
it "should't raise ArgumentError if @goals is an array" do
|
37
37
|
goals_collection = Split::GoalsCollection.
|
38
38
|
new('experiment_name', ['an array'])
|
39
|
-
expect { goals_collection.validate! }.not_to raise_error
|
39
|
+
expect { goals_collection.validate! }.not_to raise_error
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
data/spec/helper_spec.rb
CHANGED
@@ -89,27 +89,33 @@ describe Split::Helper do
|
|
89
89
|
expect(ab_test('link_color', 'blue', 'red')).to eq('orange')
|
90
90
|
end
|
91
91
|
|
92
|
-
it "should allow the alternative to be
|
93
|
-
|
92
|
+
it "should allow the alternative to be forced by passing it in the params" do
|
93
|
+
# ?ab_test[link_color]=blue
|
94
|
+
@params = { 'ab_test' => { 'link_color' => 'blue' } }
|
95
|
+
|
94
96
|
alternative = ab_test('link_color', 'blue', 'red')
|
95
97
|
expect(alternative).to eq('blue')
|
98
|
+
|
96
99
|
alternative = ab_test('link_color', {'blue' => 1}, 'red' => 5)
|
97
100
|
expect(alternative).to eq('blue')
|
98
|
-
|
101
|
+
|
102
|
+
@params = { 'ab_test' => { 'link_color' => 'red' } }
|
103
|
+
|
99
104
|
alternative = ab_test('link_color', 'blue', 'red')
|
100
105
|
expect(alternative).to eq('red')
|
106
|
+
|
101
107
|
alternative = ab_test('link_color', {'blue' => 5}, 'red' => 1)
|
102
108
|
expect(alternative).to eq('red')
|
103
109
|
end
|
104
110
|
|
105
111
|
it "should not allow an arbitrary alternative" do
|
106
|
-
@params = {'link_color' => 'pink'}
|
112
|
+
@params = { 'ab_test' => { 'link_color' => 'pink' } }
|
107
113
|
alternative = ab_test('link_color', 'blue')
|
108
114
|
expect(alternative).to eq('blue')
|
109
115
|
end
|
110
116
|
|
111
117
|
it "should not store the split when a param forced alternative" do
|
112
|
-
@params = {'link_color' => 'blue'}
|
118
|
+
@params = { 'ab_test' => { 'link_color' => 'blue' } }
|
113
119
|
expect(ab_user).not_to receive(:[]=)
|
114
120
|
ab_test('link_color', 'blue', 'red')
|
115
121
|
end
|
@@ -136,7 +142,7 @@ describe Split::Helper do
|
|
136
142
|
before { Split.configuration.store_override = true }
|
137
143
|
|
138
144
|
it "should store the forced alternative" do
|
139
|
-
@params = {'link_color' => 'blue'}
|
145
|
+
@params = { 'ab_test' => { 'link_color' => 'blue' } }
|
140
146
|
expect(ab_user).to receive(:[]=).with('link_color', 'blue')
|
141
147
|
ab_test('link_color', 'blue', 'red')
|
142
148
|
end
|
@@ -232,7 +238,7 @@ describe Split::Helper do
|
|
232
238
|
end
|
233
239
|
|
234
240
|
it 'should be passed to helper block' do
|
235
|
-
@params = {'my_experiment' => 'one'}
|
241
|
+
@params = { 'ab_test' => { 'my_experiment' => 'one' } }
|
236
242
|
expect(ab_test('my_experiment')).to eq 'one'
|
237
243
|
expect(ab_test('my_experiment') do |alternative, meta|
|
238
244
|
meta
|
@@ -790,7 +796,7 @@ describe Split::Helper do
|
|
790
796
|
|
791
797
|
context 'and given an override parameter' do
|
792
798
|
it 'should use given override instead of the first alternative' do
|
793
|
-
@params = {'link_color' => 'red'}
|
799
|
+
@params = { 'ab_test' => { 'link_color' => 'red' } }
|
794
800
|
expect(ab_test('link_color', 'blue', 'red')).to eq('red')
|
795
801
|
expect(ab_test('link_color', 'blue', 'red', 'green')).to eq('red')
|
796
802
|
expect(ab_test('link_color', {'blue' => 0.01}, 'red' => 0.2)).to eq('red')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: split
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Nesbitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|