chanko_ab 0.2.0 → 0.3.0

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
  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