chanko_ab 0.2.0 → 0.3.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
2
  SHA256:
3
- metadata.gz: a967e68060d36eb785d8fd8759e8222e82c9e484e731e837064568ed12e62371
4
- data.tar.gz: 23454bd8fe55e33eb8cf75ae6c9ca755f36eae4aef583c8970363b934251b477
3
+ metadata.gz: 669ae5ace4fc737c1712ff414847634c912c82148ef545286ea989e6be4984a0
4
+ data.tar.gz: 6b64b0e029598252785701d324c006e29793e430261a1df250a901ae5f49d9d1
5
5
  SHA512:
6
- metadata.gz: e7c9cbdb8222de95783a790f7168918a7dbad6c43d683a7c9a4e483b838fec080a42bcf96023ad04fd113a1a878879aeba9668a941e397a2ba32567e63141a67
7
- data.tar.gz: 77e2ddf77e4298023e7de46f892db281c094f32c2b776401f20bb4d584d6b41de2fd57f00e71c06a4dbe0df45f82d40dbd6942ad74b321d129f974d4a48a7c8c
6
+ metadata.gz: ca89fbde6694dc77c8df037196496a58a81a915b0db22976d20fb8d09ce2ed82affd391d488cfe7538908b0839a6c9a0f89ab2c5b14f7639fedd13c4c9e8a448
7
+ data.tar.gz: 37fa07a8175de2913f99de64968fa51cfa0491712c585a8bcd0384bdf2c1592f2790a48118bfe6a9b3545a2149cada1a0c14af4d8c574660633d342e7deb2b15
data/CHANGELOG.md CHANGED
@@ -1,4 +1,17 @@
1
1
  # Change Log
2
+ ## [0.3.3] (2022-09-07)
3
+ ### Added
4
+ - Support for selectable identifier for each experiment.
5
+ ### Changed
6
+ - ChankoAb.set_identifier has been renamed renamed to ChankoAb.set_default_identifier
7
+
8
+ ## [0.2.2] (2022-09-07)
9
+ ### Fixed
10
+ - Fix codes for tests
11
+
12
+ ## [0.2.1] (2022-09-07)
13
+ ### Fixed
14
+ - Always load constants for testing to prevent unforeseen accident
2
15
 
3
16
  ## [0.2.0] (2022-09-07)
4
17
  ### Added
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- chanko_ab (0.1.1)
4
+ chanko_ab (0.2.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -24,7 +24,7 @@ ChankoAb.set_logging do |name|
24
24
  Rails.logger.debug(name)
25
25
  end
26
26
 
27
- ChankoAb.set_identifier do
27
+ ChankoAb.set_default_identifier do
28
28
  cookies[:identifier]
29
29
  end
30
30
  ```
@@ -53,6 +53,15 @@ module MySplitTest
53
53
  end
54
54
  ```
55
55
 
56
+ ### Switch using identifier
57
+ ```ruby
58
+ module MySplitTest
59
+ ...
60
+ split_test.identifier { cookies[:unique_id] }
61
+ ...
62
+ end
63
+ ```
64
+
56
65
  ### Use HexIdentifier if identifier is composed by hex.
57
66
  ```ruby
58
67
  module HexMySplitTest
@@ -20,7 +20,7 @@ module ChankoAb
20
20
 
21
21
  def validate!
22
22
  unless Rails.env.production?
23
- raise "Argument should be a divisor of #{just_patterns_size.max}, but #{split_size} is given." if !just_patterns_size.member?(split_size)
23
+ raise "Argument should be a divisor of #{just_patterns_size.max}, but #{split_size} is given." unless just_patterns_size.member?(split_size)
24
24
  raise "Identifier is blank" if @identifier.blank?
25
25
  raise "Identifier is too short" if @identifier.size < (@using_index + 1)
26
26
  raise 'Too large pattern size' if patterns.size >= just_pattern_sizes.max
@@ -32,7 +32,7 @@ module ChankoAb
32
32
  end
33
33
 
34
34
  def should_run_default?
35
- return true if !item
35
+ return true unless item
36
36
  @identifier.blank?
37
37
  end
38
38
 
@@ -61,7 +61,7 @@ module ChankoAb
61
61
  end
62
62
 
63
63
  def item
64
- if Rails.env.test? && ChankoAb::Test.overwritten?(@split_test.unit)
64
+ if (Rails.env.test? || ChankoAb.env == :test) && ChankoAb::Test.overwritten?(@split_test.unit)
65
65
  return pattern_by_overwritten
66
66
  else
67
67
  index = decide_pattern_index
@@ -23,6 +23,18 @@ module ChankoAb
23
23
  @unit
24
24
  end
25
25
 
26
+ def identifier(&block)
27
+ @identifier_proc = block
28
+ end
29
+
30
+ def identifier_proc
31
+ @identifier_proc
32
+ end
33
+
34
+ def reset_identifier
35
+ @identifier_proc = nil
36
+ end
37
+
26
38
  def logic(logic)
27
39
  @logic = logic
28
40
  end
@@ -85,7 +97,11 @@ module ChankoAb
85
97
  end
86
98
 
87
99
  shared(:identifier) do
88
- self.instance_eval(&ChankoAb.identifier_proc)
100
+ self.instance_eval(&identifier_proc)
101
+ end
102
+
103
+ shared(:identifier_proc) do
104
+ __split_test__.identifier_proc || ChankoAb.default_identifier_proc
89
105
  end
90
106
  end
91
107
  end
@@ -1,16 +1,20 @@
1
1
  module ChankoAb
2
2
  module Test
3
+ def self.overwritten_names
4
+ @overwritten_names ||= {}
5
+ @overwritten_names
6
+ end
7
+
3
8
  def self.overwritten_name(klass)
4
- @overwritten_names[klass]
9
+ self.overwritten_names[klass]
5
10
  end
6
11
 
7
12
  def self.overwrite(klass, name)
8
- @overwritten_names ||= {}
9
- @overwritten_names[klass] = name
13
+ self.overwritten_names[klass] = name
10
14
  end
11
15
 
12
16
  def self.overwritten?(klass)
13
- !!@overwritten_names[klass]
17
+ !!self.overwritten_names[klass]
14
18
  end
15
19
 
16
20
  def self.reset!
@@ -1,3 +1,3 @@
1
1
  module ChankoAb
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/chanko_ab.rb CHANGED
@@ -1,10 +1,19 @@
1
1
  require "chanko_ab/version"
2
+ require "chanko_ab/test"
2
3
  require "chanko_ab/split_test"
3
4
  require "chanko_ab/logic/base"
4
5
  require "chanko_ab/logic/number_identifier"
5
6
  require "chanko_ab/logic/hex_identifier"
6
7
 
7
8
  module ChankoAb
9
+ def self.env=(env)
10
+ @env = env
11
+ end
12
+
13
+ def self.env
14
+ @env
15
+ end
16
+
8
17
  module ClassMethods
9
18
  def split_test
10
19
  @split_test ||= SplitTest.new(self)
@@ -19,12 +28,12 @@ module ChankoAb
19
28
  @logging_proc = block
20
29
  end
21
30
 
22
- def self.set_identifier(&block)
23
- @identifier_proc = block
31
+ def self.set_default_identifier(&block)
32
+ @default_identifier_proc = block
24
33
  end
25
34
 
26
- def self.identifier_proc
27
- @identifier_proc
35
+ def self.default_identifier_proc
36
+ @default_identifier_proc
28
37
  end
29
38
 
30
39
  def self.default_logic
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chanko_ab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - morita shingo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-06 00:00:00.000000000 Z
11
+ date: 2022-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chanko