vinted-ab 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 67031305b2c5c180288a616ff7d931d4918604dc
4
- data.tar.gz: de313c446acea2eda841eea20930c82938628c0c
3
+ metadata.gz: 9b99ce135ea2599d2b7eed9d8a99652741fb5e63
4
+ data.tar.gz: d2a4c0f817404e112e425374c9647a675e687c86
5
5
  SHA512:
6
- metadata.gz: 8cd252fbb99403b6405401584879f9a410450adbaf2b8efa1c942d113e6046089fea519c90c7d4a9ae449e3e45a236acc1fc2ec0d9762071dcde2e2b88e07712
7
- data.tar.gz: e0f21c86e0a21c40359da87572cfcfc9a23b955ea4d61c0730b547ea80d16a565e85c9a4c75da3551fbabda8f7c76703ae07c8cb7fa35f3bf3edeb8dc90fe9bd
6
+ metadata.gz: 32e40803fc1a40193395ff3220b23ce6ccb5c7d96cadedb68ea0f186783d2ab66396a49d1b4d31c5ec76c53bf5d3497a263a2df41107a2597e079ccb3354bb77
7
+ data.tar.gz: 1229b0fe8d22740adbf0e04377dc490bd5f20366bfaacace608cf04f7b7d224b24aa80a483b59720ec18325cb3e04c9f3d1f5ab8047f1f5bec265c66b8a37741
data/README.md CHANGED
@@ -15,7 +15,7 @@ Each identifier is assigned to a bucket, using a hashing function. Buckets can t
15
15
  ```ruby
16
16
  ab = Ab::Tests.new(configuration, identifier)
17
17
 
18
- # defining callbacks
18
+ # defining callbacks, will use caller's context
19
19
  Ab::Tests.before_picking_variant { |test| puts "picking variant for #{test}" }
20
20
  Ab::Tests.after_picking_variant { |test, variant| puts "#{variant_name}" }
21
21
 
@@ -113,3 +113,8 @@ seeded_identifier = test.seed + identifier.to_string
113
113
  weight_id = SHA256.hexdigest(seeded_identifier).to_int % chance_weight_sum
114
114
  test.variants.find { |variant| variant.accumulated_chance_weight > weight_id }
115
115
  ```
116
+
117
+ ## Other Implementations
118
+
119
+ * [Java](https://github.com/vinted/ab-java) - intended to be used on Android, but not limited to that
120
+ * [Objective-C](https://github.com/vinted/ab-ios) - intended to be used on iOS devices
data/ab.gemspec CHANGED
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = `git ls-files -- {spec}/*`.split("\n")
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_runtime_dependency 'hooks', '~> 0.4', '>= 0.4.0'
23
22
  spec.add_development_dependency 'bundler', '~> 1.3'
24
23
  spec.add_development_dependency 'rake', '~> 10.1', '>= 10.1.0'
25
24
  spec.add_development_dependency 'rspec', '~> 2.14', '>= 2.14.0'
data/lib/ab.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'hooks'
2
1
  require 'ab/version'
3
2
  require 'ab/null_test'
4
3
  require 'ab/variant'
@@ -1,8 +1,5 @@
1
1
  module Ab
2
2
  class AssignedTest
3
- include Hooks
4
- define_hooks :before_picking_variant, :after_picking_variant
5
-
6
3
  def initialize(test, id)
7
4
  @test, @id = test, id
8
5
  @test.variants.map(&:name).each do |name|
@@ -10,16 +7,27 @@ module Ab
10
7
  end
11
8
  end
12
9
 
10
+ class << self
11
+ attr_reader :before, :after
12
+ def before_picking_variant(&block)
13
+ @before = block
14
+ end
15
+
16
+ def after_picking_variant(&block)
17
+ @after = block
18
+ end
19
+ end
20
+
13
21
  def variant
14
22
  @variant ||= begin
15
23
  return unless part_of_test?
16
24
  return unless running?
17
25
 
18
- run_hook :before_picking_variant, @test.name
26
+ AssignedTest.before.call(@test.name) if AssignedTest.before.respond_to?(:call)
19
27
  picked_variant = @test.variants.find { |v| v.accumulated_chance_weight > weight_id }
20
28
 
21
29
  result = picked_variant.name if picked_variant
22
- run_hook :after_picking_variant, @test.name, result
30
+ AssignedTest.after.call(@test.name, result) if AssignedTest.after.respond_to?(:call)
23
31
  result
24
32
  end
25
33
  end
data/lib/ab/tests.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  module Ab
2
2
  class Tests
3
- include Hooks
4
- define_hooks :before_picking_variant, :after_picking_variant
3
+ class << self
4
+ def before_picking_variant(&block)
5
+ AssignedTest.before_picking_variant(&block)
6
+ end
5
7
 
6
- Ab::AssignedTest.before_picking_variant do |test|
7
- Ab::Tests.run_hook :before_picking_variant, test
8
- end
9
- Ab::AssignedTest.after_picking_variant do |test, variant|
10
- Ab::Tests.run_hook :after_picking_variant, test, variant
8
+ def after_picking_variant(&block)
9
+ AssignedTest.after_picking_variant(&block)
10
+ end
11
11
  end
12
12
 
13
13
  def initialize(json, id)
data/lib/ab/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ab
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "test": "already_finished",
3
3
  "variants": {
4
- "": [291605, 304029, 260623, 330108, 579320, 530360, 372392, 700813, 244200, 541818, 432400, 943631, 437817, 226191, 569129, 436127, 490360, 929904, 603358, 437705, 878118, 807422, 972099, 404677, 67694, 384045, 48608, 518304, 830501, 902758, 915681, 211550, 748688, 606226, 309490, 12909, 762, 560680, 945245, 795680, 358793, 850366, 278017, 765934, 378015, 156624, 878811, 814470, 830857, 712438]
4
+ "": [null, 291605, 304029, 260623, 330108, 579320, 530360, 372392, 700813, 244200, 541818, 432400, 943631, 437817, 226191, 569129, 436127, 490360, 929904, 603358, 437705, 878118, 807422, 972099, 404677, 67694, 384045, 48608, 518304, 830501, 902758, 915681, 211550, 748688, 606226, 309490, 12909, 762, 560680, 945245, 795680, 358793, 850366, 278017, 765934, 378015, 156624, 878811, 814470, 830857, 712438]
5
5
  }
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "test": "has_not_started",
3
3
  "variants": {
4
- "": [183045, 691488, 793455, 522272, 961068, 778995, 753374, 995071, 219, 9, 765648, 519309, 581785, 419174, 62315, 901724, 739080, 528967, 744073, 751906, 886404, 457847, 817084, 160980, 302650, 911722, 447343, 871078, 450743, 879249, 276816, 826730, 697169, 344382, 511211, 154169, 55093, 648220, 964453, 862546, 208317, 16098, 341078, 111032, 277598, 876165, 650530, 446612, 583245, 7724]
4
+ "": [null, 183045, 691488, 793455, 522272, 961068, 778995, 753374, 995071, 219, 9, 765648, 519309, 581785, 419174, 62315, 901724, 739080, 528967, 744073, 751906, 886404, 457847, 817084, 160980, 302650, 911722, 447343, 871078, 450743, 879249, 276816, 826730, 697169, 344382, 511211, 154169, 55093, 648220, 964453, 862546, 208317, 16098, 341078, 111032, 277598, 876165, 650530, 446612, 583245, 7724]
5
5
  }
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "test": "no_buckets",
3
3
  "variants": {
4
- "": [221661, 512005, 429796, 860028, 10044, 249906, 491257, 188883, 793187, 86200, 155542, 257569, 534172, 506476, 461784, 123346, 882492, 933085, 105147, 575351, 756286, 293415, 946852, 894051, 109248, 285169, 499834, 422777, 793, 353968, 470821, 300689, 994515, 352756, 527621, 811497, 12865, 405584, 783387, 23868, 1577, 402157, 645302, 921879, 743877, 65532, 729269, 704958, 473143, 621616]
4
+ "": [null, 221661, 512005, 429796, 860028, 10044, 249906, 491257, 188883, 793187, 86200, 155542, 257569, 534172, 506476, 461784, 123346, 882492, 933085, 105147, 575351, 756286, 293415, 946852, 894051, 109248, 285169, 499834, 422777, 793, 353968, 470821, 300689, 994515, 352756, 527621, 811497, 12865, 405584, 783387, 23868, 1577, 402157, 645302, 921879, 743877, 65532, 729269, 704958, 473143, 621616]
5
5
  }
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "test": "zero_buckets",
3
3
  "variants": {
4
- "": [407157, 680726, 413486, 225300, 884397, 493575, 77961, 191171, 540935, 504825, 276950, 750121, 964532, 987549, 250191, 644840, 906385, 584061, 56659, 397052, 544631, 107797, 485280, 418972, 547068, 726896, 224553, 369481, 713741, 739533, 639550, 895066, 397180, 829280, 581343, 566108, 438772, 173296, 99849, 106325, 308317, 135582, 82913, 994233, 882570, 72915, 699850, 161517, 420297, 836392]
4
+ "": [null, 407157, 680726, 413486, 225300, 884397, 493575, 77961, 191171, 540935, 504825, 276950, 750121, 964532, 987549, 250191, 644840, 906385, 584061, 56659, 397052, 544631, 107797, 485280, 418972, 547068, 726896, 224553, 369481, 713741, 739533, 639550, 895066, 397180, 829280, 581343, 566108, 438772, 173296, 99849, 106325, 308317, 135582, 82913, 994233, 882570, 72915, 699850, 161517, 420297, 836392]
5
5
  }
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "test": "zero_weight",
3
3
  "variants": {
4
- "": [407157, 680726, 413486, 225300, 884397, 493575, 77961, 191171, 540935, 504825, 276950, 750121, 964532, 987549, 250191, 644840, 906385, 584061, 56659, 397052, 544631, 107797, 485280, 418972, 547068, 726896, 224553, 369481, 713741, 739533, 639550, 895066, 397180, 829280, 581343, 566108, 438772, 173296, 99849, 106325, 308317, 135582, 82913, 994233, 882570, 72915, 699850, 161517, 420297, 836392]
4
+ "": [null, 407157, 680726, 413486, 225300, 884397, 493575, 77961, 191171, 540935, 504825, 276950, 750121, 964532, 987549, 250191, 644840, 906385, 584061, 56659, 397052, 544631, 107797, 485280, 418972, 547068, 726896, 224553, 369481, 713741, 739533, 639550, 895066, 397180, 829280, 581343, 566108, 438772, 173296, 99849, 106325, 308317, 135582, 82913, 994233, 882570, 72915, 699850, 161517, 420297, 836392]
5
5
  }
6
6
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vinted-ab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mindaugas Mozūras
@@ -9,140 +9,120 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-19 00:00:00.000000000 Z
12
+ date: 2014-07-07 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: hooks
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ~>
19
- - !ruby/object:Gem::Version
20
- version: '0.4'
21
- - - '>='
22
- - !ruby/object:Gem::Version
23
- version: 0.4.0
24
- type: :runtime
25
- prerelease: false
26
- version_requirements: !ruby/object:Gem::Requirement
27
- requirements:
28
- - - ~>
29
- - !ruby/object:Gem::Version
30
- version: '0.4'
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: 0.4.0
34
14
  - !ruby/object:Gem::Dependency
35
15
  name: bundler
36
16
  requirement: !ruby/object:Gem::Requirement
37
17
  requirements:
38
- - - ~>
18
+ - - "~>"
39
19
  - !ruby/object:Gem::Version
40
20
  version: '1.3'
41
21
  type: :development
42
22
  prerelease: false
43
23
  version_requirements: !ruby/object:Gem::Requirement
44
24
  requirements:
45
- - - ~>
25
+ - - "~>"
46
26
  - !ruby/object:Gem::Version
47
27
  version: '1.3'
48
28
  - !ruby/object:Gem::Dependency
49
29
  name: rake
50
30
  requirement: !ruby/object:Gem::Requirement
51
31
  requirements:
52
- - - ~>
32
+ - - "~>"
53
33
  - !ruby/object:Gem::Version
54
34
  version: '10.1'
55
- - - '>='
35
+ - - ">="
56
36
  - !ruby/object:Gem::Version
57
37
  version: 10.1.0
58
38
  type: :development
59
39
  prerelease: false
60
40
  version_requirements: !ruby/object:Gem::Requirement
61
41
  requirements:
62
- - - ~>
42
+ - - "~>"
63
43
  - !ruby/object:Gem::Version
64
44
  version: '10.1'
65
- - - '>='
45
+ - - ">="
66
46
  - !ruby/object:Gem::Version
67
47
  version: 10.1.0
68
48
  - !ruby/object:Gem::Dependency
69
49
  name: rspec
70
50
  requirement: !ruby/object:Gem::Requirement
71
51
  requirements:
72
- - - ~>
52
+ - - "~>"
73
53
  - !ruby/object:Gem::Version
74
54
  version: '2.14'
75
- - - '>='
55
+ - - ">="
76
56
  - !ruby/object:Gem::Version
77
57
  version: 2.14.0
78
58
  type: :development
79
59
  prerelease: false
80
60
  version_requirements: !ruby/object:Gem::Requirement
81
61
  requirements:
82
- - - ~>
62
+ - - "~>"
83
63
  - !ruby/object:Gem::Version
84
64
  version: '2.14'
85
- - - '>='
65
+ - - ">="
86
66
  - !ruby/object:Gem::Version
87
67
  version: 2.14.0
88
68
  - !ruby/object:Gem::Dependency
89
69
  name: json-schema
90
70
  requirement: !ruby/object:Gem::Requirement
91
71
  requirements:
92
- - - ~>
72
+ - - "~>"
93
73
  - !ruby/object:Gem::Version
94
74
  version: 2.2.2
95
- - - '>='
75
+ - - ">="
96
76
  - !ruby/object:Gem::Version
97
77
  version: 2.2.2
98
78
  type: :development
99
79
  prerelease: false
100
80
  version_requirements: !ruby/object:Gem::Requirement
101
81
  requirements:
102
- - - ~>
82
+ - - "~>"
103
83
  - !ruby/object:Gem::Version
104
84
  version: 2.2.2
105
- - - '>='
85
+ - - ">="
106
86
  - !ruby/object:Gem::Version
107
87
  version: 2.2.2
108
88
  - !ruby/object:Gem::Dependency
109
89
  name: ruby-prof
110
90
  requirement: !ruby/object:Gem::Requirement
111
91
  requirements:
112
- - - ~>
92
+ - - "~>"
113
93
  - !ruby/object:Gem::Version
114
94
  version: 0.15.0
115
- - - '>='
95
+ - - ">="
116
96
  - !ruby/object:Gem::Version
117
97
  version: 0.15.0
118
98
  type: :development
119
99
  prerelease: false
120
100
  version_requirements: !ruby/object:Gem::Requirement
121
101
  requirements:
122
- - - ~>
102
+ - - "~>"
123
103
  - !ruby/object:Gem::Version
124
104
  version: 0.15.0
125
- - - '>='
105
+ - - ">="
126
106
  - !ruby/object:Gem::Version
127
107
  version: 0.15.0
128
108
  - !ruby/object:Gem::Dependency
129
109
  name: pry
130
110
  requirement: !ruby/object:Gem::Requirement
131
111
  requirements:
132
- - - ~>
112
+ - - "~>"
133
113
  - !ruby/object:Gem::Version
134
114
  version: 0.10.0
135
- - - '>='
115
+ - - ">="
136
116
  - !ruby/object:Gem::Version
137
117
  version: 0.10.0
138
118
  type: :development
139
119
  prerelease: false
140
120
  version_requirements: !ruby/object:Gem::Requirement
141
121
  requirements:
142
- - - ~>
122
+ - - "~>"
143
123
  - !ruby/object:Gem::Version
144
124
  version: 0.10.0
145
- - - '>='
125
+ - - ">="
146
126
  - !ruby/object:Gem::Version
147
127
  version: 0.10.0
148
128
  description:
@@ -153,8 +133,8 @@ executables: []
153
133
  extensions: []
154
134
  extra_rdoc_files: []
155
135
  files:
156
- - .gitignore
157
- - .rubocop.yml
136
+ - ".gitignore"
137
+ - ".rubocop.yml"
158
138
  - Gemfile
159
139
  - LICENSE
160
140
  - README.md
@@ -208,17 +188,17 @@ require_paths:
208
188
  - lib
209
189
  required_ruby_version: !ruby/object:Gem::Requirement
210
190
  requirements:
211
- - - '>='
191
+ - - ">="
212
192
  - !ruby/object:Gem::Version
213
193
  version: '0'
214
194
  required_rubygems_version: !ruby/object:Gem::Requirement
215
195
  requirements:
216
- - - '>='
196
+ - - ">="
217
197
  - !ruby/object:Gem::Version
218
198
  version: 1.3.6
219
199
  requirements: []
220
200
  rubyforge_project:
221
- rubygems_version: 2.2.2
201
+ rubygems_version: 2.3.0
222
202
  signing_key:
223
203
  specification_version: 4
224
204
  summary: AB testing gem used internally by Vinted