a_b_split 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 28166486a6f870f7b67355794008e620971f416b
4
- data.tar.gz: 457b3a539da94205f8533849721d323f114e7b2a
2
+ SHA256:
3
+ metadata.gz: cfc2882fcb9f24f91f27a3468f85d65924c97a791f3f95ce559df5da565b5f1f
4
+ data.tar.gz: 54409dd1f4376d3ea80ac105a23a7c9e88cfd12033b94b1fa0659c9028bb7e06
5
5
  SHA512:
6
- metadata.gz: e615da6bbd04d68255074bca677c818933444b7ecabf966cd7fee20f3b339d465939f53f9f7ab7d6880ff912290df54eb832e9f4df600cbe78c5ab6458deaf99
7
- data.tar.gz: ba65a2075286ef08e830e6eaa238c9af6b1d8c1c5cb5d8a984251300a54673bd22217d762ac8f25c0c4da124f498c597ee73526b35affe193366ec1a6ca7b97a
6
+ metadata.gz: b28f31ba66a0891083612f9d7d47df028754161de2f0fdc2eb50b75f5f3cf6a88d8c97628490d83de3d68746605e820028a8a00afd80de2fe502d89dc6264288
7
+ data.tar.gz: a25f4d3d1d6c5435a517e68840e7941a3a57482d95052d3bde26eaf5703930d9eed2c60fbfbcfcb6d0e216070a5483e6b65b6bb17dbb44cfbb24e3e45988e294
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('..', __FILE__)
2
+
3
+ $LOAD_PATH.unshift File.expand_path(__dir__)
3
4
 
4
5
  require 'a_b_split/functions'
5
6
  require 'a_b_split/configuration'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  Dir[File.join(File.dirname(__FILE__), 'functions', '*')].each do |function|
3
4
  require function
4
5
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'bigdecimal'
3
4
  require_relative 'weighted_split'
4
5
 
@@ -49,8 +50,8 @@ module ABSplit
49
50
  experiment['weight'].to_f / 100
50
51
  end
51
52
 
52
- def sigmoid(x)
53
- BigDecimal.new((1.0 / (1 + Math.exp(-2 * x))).to_s)
53
+ def sigmoid(value)
54
+ BigDecimal((1.0 / (1 + Math.exp(-2 * value))).to_s)
54
55
  end
55
56
  end
56
57
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'digest'
3
4
  require_relative 'weighted_split'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module ABSplit
3
4
  module Functions
4
5
  # Weighted split based on hash value.
@@ -10,12 +11,12 @@ module ABSplit
10
11
  MAX_POSITIONS = (9_999_999_999_999_999_999 * 2) + 1 # capacity of Fixnum
11
12
 
12
13
  class << self
13
- def value_for(x, *params)
14
+ def value_for(value, *params)
14
15
  given_weights = validate(params)
15
16
 
16
17
  experiments = split_weights(params, params.size, given_weights)
17
18
 
18
- select_experiment_for(x, experiments)
19
+ select_experiment_for(value, experiments)
19
20
  end
20
21
 
21
22
  protected
@@ -42,15 +43,15 @@ module ABSplit
42
43
  experiment['weight'] = if experiment['weight']
43
44
  experiment['weight'].to_f
44
45
  else
45
- missing_percentage.to_f / missing_weights.to_f
46
+ missing_percentage.to_f / missing_weights
46
47
  end
47
48
 
48
49
  experiment
49
50
  end
50
51
  end
51
52
 
52
- def select_experiment_for(x, experiments)
53
- x_position = x.hash
53
+ def select_experiment_for(value, experiments)
54
+ x_position = value.hash
54
55
 
55
56
  markers(experiments).each_with_index do |limit, i|
56
57
  return experiments[i]['name'] if x_position <= limit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module ABSplit
3
4
  # This class is responsible for spliting the population using the experiment
4
5
  # name passed as a parameter. It will always return an experiment name or a
@@ -7,12 +8,12 @@ module ABSplit
7
8
  include ABSplit
8
9
 
9
10
  class << self
10
- def split(name, x)
11
+ def split(name, value)
11
12
  self.experiment = find(name)
12
13
 
13
14
  raise ABSplit::NoValidExperiment unless experiment
14
15
 
15
- function.value_for(x, *options)
16
+ function.value_for(value, *options)
16
17
  end
17
18
 
18
19
  private
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module ABSplit
3
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
4
5
  end
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: a_b_split
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Enrique M Figuerola Gomez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-13 00:00:00.000000000 Z
11
+ date: 2019-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: pry
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.4'
19
+ version: '0.12'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.4'
26
+ version: '0.12'
27
27
  - !ruby/object:Gem::Dependency
28
- name: pry
28
+ name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.10'
33
+ version: '12.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.10'
40
+ version: '12.3'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '12.0'
47
+ version: '3.8'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '12.0'
54
+ version: '3.8'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.47'
61
+ version: '0.70'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.47'
68
+ version: '0.70'
69
69
  description:
70
70
  email: me@emfigo.com
71
71
  executables: []
@@ -92,15 +92,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: 2.0.0
95
+ version: '2.3'
96
96
  required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  requirements:
98
98
  - - ">="
99
99
  - !ruby/object:Gem::Version
100
100
  version: '0'
101
101
  requirements: []
102
- rubyforge_project:
103
- rubygems_version: 2.6.8
102
+ rubygems_version: 3.0.3
104
103
  signing_key:
105
104
  specification_version: 4
106
105
  summary: Splits experiment cohorts for A/B testing