vanity 3.0.2 → 4.0.1

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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/linting.yml +28 -0
  3. data/.github/workflows/test.yml +3 -6
  4. data/.rubocop.yml +114 -0
  5. data/.rubocop_todo.yml +67 -0
  6. data/Appraisals +9 -31
  7. data/CHANGELOG +13 -0
  8. data/Gemfile +7 -3
  9. data/Gemfile.lock +32 -4
  10. data/README.md +4 -9
  11. data/Rakefile +25 -24
  12. data/bin/vanity +1 -1
  13. data/doc/configuring.textile +1 -0
  14. data/gemfiles/rails52.gemfile +6 -3
  15. data/gemfiles/rails52.gemfile.lock +34 -9
  16. data/gemfiles/rails60.gemfile +6 -3
  17. data/gemfiles/rails60.gemfile.lock +34 -9
  18. data/gemfiles/rails61.gemfile +6 -3
  19. data/gemfiles/rails61.gemfile.lock +34 -9
  20. data/lib/generators/vanity/migration_generator.rb +5 -7
  21. data/lib/vanity/adapters/abstract_adapter.rb +43 -45
  22. data/lib/vanity/adapters/active_record_adapter.rb +30 -30
  23. data/lib/vanity/adapters/mock_adapter.rb +14 -18
  24. data/lib/vanity/adapters/mongodb_adapter.rb +73 -69
  25. data/lib/vanity/adapters/redis_adapter.rb +19 -27
  26. data/lib/vanity/adapters.rb +1 -1
  27. data/lib/vanity/autoconnect.rb +6 -7
  28. data/lib/vanity/commands/list.rb +7 -7
  29. data/lib/vanity/commands/report.rb +18 -22
  30. data/lib/vanity/configuration.rb +23 -19
  31. data/lib/vanity/connection.rb +12 -14
  32. data/lib/vanity/experiment/ab_test.rb +95 -79
  33. data/lib/vanity/experiment/alternative.rb +3 -5
  34. data/lib/vanity/experiment/base.rb +24 -19
  35. data/lib/vanity/experiment/bayesian_bandit_score.rb +7 -13
  36. data/lib/vanity/experiment/definition.rb +6 -6
  37. data/lib/vanity/frameworks/rails.rb +39 -39
  38. data/lib/vanity/frameworks.rb +2 -2
  39. data/lib/vanity/helpers.rb +1 -1
  40. data/lib/vanity/metric/active_record.rb +21 -19
  41. data/lib/vanity/metric/base.rb +22 -23
  42. data/lib/vanity/metric/google_analytics.rb +6 -9
  43. data/lib/vanity/metric/remote.rb +3 -5
  44. data/lib/vanity/playground.rb +3 -6
  45. data/lib/vanity/vanity.rb +8 -12
  46. data/lib/vanity/version.rb +1 -1
  47. data/test/adapters/active_record_adapter_test.rb +1 -5
  48. data/test/adapters/mock_adapter_test.rb +0 -2
  49. data/test/adapters/mongodb_adapter_test.rb +1 -5
  50. data/test/adapters/redis_adapter_test.rb +2 -3
  51. data/test/adapters/shared_tests.rb +9 -12
  52. data/test/autoconnect_test.rb +3 -3
  53. data/test/cli_test.rb +0 -1
  54. data/test/configuration_test.rb +18 -34
  55. data/test/connection_test.rb +3 -3
  56. data/test/dummy/Rakefile +1 -1
  57. data/test/dummy/app/controllers/use_vanity_controller.rb +12 -8
  58. data/test/dummy/app/mailers/vanity_mailer.rb +3 -3
  59. data/test/dummy/config/application.rb +1 -1
  60. data/test/dummy/config/boot.rb +3 -3
  61. data/test/dummy/config/environment.rb +1 -1
  62. data/test/dummy/config/environments/development.rb +0 -1
  63. data/test/dummy/config/environments/test.rb +1 -1
  64. data/test/dummy/config/initializers/session_store.rb +1 -1
  65. data/test/dummy/config/initializers/vanity.rb +3 -0
  66. data/test/dummy/config/vanity.yml +7 -0
  67. data/test/dummy/config.ru +1 -1
  68. data/test/dummy/script/rails +2 -2
  69. data/test/experiment/ab_test.rb +188 -154
  70. data/test/experiment/base_test.rb +48 -32
  71. data/test/frameworks/rails/action_controller_test.rb +25 -25
  72. data/test/frameworks/rails/action_mailer_test.rb +2 -2
  73. data/test/frameworks/rails/action_view_test.rb +5 -6
  74. data/test/frameworks/rails/rails_test.rb +147 -181
  75. data/test/helper_test.rb +2 -2
  76. data/test/metric/active_record_test.rb +174 -212
  77. data/test/metric/base_test.rb +21 -46
  78. data/test/metric/google_analytics_test.rb +17 -25
  79. data/test/metric/remote_test.rb +7 -10
  80. data/test/playground_test.rb +7 -15
  81. data/test/templates_test.rb +16 -20
  82. data/test/test_helper.rb +28 -29
  83. data/test/vanity_test.rb +4 -10
  84. data/test/web/rails/dashboard_test.rb +21 -21
  85. data/vanity.gemspec +8 -7
  86. metadata +32 -30
  87. data/gemfiles/rails42.gemfile +0 -33
  88. data/gemfiles/rails42.gemfile.lock +0 -265
  89. data/gemfiles/rails42_protected_attributes.gemfile +0 -34
  90. data/gemfiles/rails42_protected_attributes.gemfile.lock +0 -264
  91. data/gemfiles/rails51.gemfile +0 -33
  92. data/gemfiles/rails51.gemfile.lock +0 -285
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: ..
9
9
  specs:
10
- vanity (3.0.2)
10
+ vanity (4.0.1)
11
11
  i18n
12
12
 
13
13
  GEM
@@ -65,6 +65,7 @@ GEM
65
65
  rake
66
66
  thor (>= 0.14.0)
67
67
  arel (9.0.0)
68
+ ast (2.4.2)
68
69
  blankslate (2.1.2.4)
69
70
  bson (4.3.0)
70
71
  bson (4.3.0-java)
@@ -82,7 +83,6 @@ GEM
82
83
  crack (0.4.3)
83
84
  safe_yaml (~> 1.0.0)
84
85
  crass (1.0.4)
85
- daemon_controller (1.2.0)
86
86
  erubi (1.7.1)
87
87
  execjs (2.7.0)
88
88
  fakefs (0.18.0)
@@ -162,11 +162,12 @@ GEM
162
162
  racc (~> 1.4)
163
163
  octokit (4.9.0)
164
164
  sawyer (~> 0.8.0, >= 0.5.3)
165
+ parallel (1.21.0)
166
+ parser (3.1.1.0)
167
+ ast (~> 2.4.1)
165
168
  parslet (1.5.0)
166
169
  blankslate (~> 2.0)
167
- passenger (3.0.21)
168
- daemon_controller (>= 1.0.0)
169
- fastthread (>= 1.0.1)
170
+ passenger (6.0.12)
170
171
  rack
171
172
  rake (>= 0.8.1)
172
173
  posix-spawn (0.3.13)
@@ -183,7 +184,7 @@ GEM
183
184
  yajl-ruby (~> 1.2.0)
184
185
  racc (1.6.0)
185
186
  racc (1.6.0-java)
186
- rack (2.0.5)
187
+ rack (2.2.3)
187
188
  rack-test (1.1.0)
188
189
  rack (>= 1.0, < 3)
189
190
  rails (5.2.0)
@@ -210,7 +211,8 @@ GEM
210
211
  method_source
211
212
  rake (>= 0.8.7)
212
213
  thor (>= 0.18.1, < 2.0)
213
- rake (12.3.1)
214
+ rainbow (3.1.1)
215
+ rake (13.0.6)
214
216
  rb-fsevent (0.10.3)
215
217
  rb-inotify (0.9.10)
216
218
  ffi (>= 0.5.0, < 2)
@@ -218,6 +220,25 @@ GEM
218
220
  redis (4.0.1)
219
221
  redis-namespace (1.6.0)
220
222
  redis (>= 3.0.4)
223
+ regexp_parser (2.2.1)
224
+ rexml (3.2.5)
225
+ rubocop (1.25.1)
226
+ parallel (~> 1.10)
227
+ parser (>= 3.1.0.0)
228
+ rainbow (>= 2.2.2, < 4.0)
229
+ regexp_parser (>= 1.8, < 3.0)
230
+ rexml
231
+ rubocop-ast (>= 1.15.1, < 2.0)
232
+ ruby-progressbar (~> 1.7)
233
+ unicode-display_width (>= 1.4.0, < 3.0)
234
+ rubocop-ast (1.15.2)
235
+ parser (>= 3.0.1.1)
236
+ rubocop-performance (1.13.2)
237
+ rubocop (>= 1.7.0, < 2.0)
238
+ rubocop-ast (>= 0.4.0)
239
+ rubocop-rspec (2.8.0)
240
+ rubocop (~> 1.19)
241
+ ruby-progressbar (1.11.0)
221
242
  ruby_dep (1.5.0)
222
243
  rubystats (0.3.0)
223
244
  safe_yaml (1.0.4)
@@ -247,6 +268,7 @@ GEM
247
268
  parslet (~> 1.5.0)
248
269
  tzinfo (1.2.5)
249
270
  thread_safe (~> 0.1)
271
+ unicode-display_width (2.1.0)
250
272
  webmock (3.4.2)
251
273
  addressable (>= 2.3.6)
252
274
  crack (>= 0.3.2)
@@ -277,13 +299,16 @@ DEPENDENCIES
277
299
  minitest (>= 4.2)
278
300
  mocha (~> 1.0)
279
301
  mongo (~> 2.1)
280
- passenger (~> 3.0)
302
+ passenger
281
303
  pry
282
304
  rack
283
305
  rails (~> 5.2.0)
284
306
  rake
285
307
  redis (>= 3.2.1)
286
308
  redis-namespace (>= 1.1.0)
309
+ rubocop
310
+ rubocop-performance
311
+ rubocop-rspec
287
312
  rubystats (>= 0.2.5)
288
313
  sqlite3 (~> 1.3.10)
289
314
  timecop
@@ -292,4 +317,4 @@ DEPENDENCIES
292
317
  yard
293
318
 
294
319
  BUNDLED WITH
295
- 1.17.2
320
+ 1.17.3
@@ -3,26 +3,29 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rack"
6
+ gem "mongo", "~> 2.1"
6
7
  gem "redis", ">= 3.2.1"
7
8
  gem "redis-namespace", ">= 1.1.0"
8
- gem "mongo", "~> 2.1"
9
9
  gem "integration", "<= 0.1.0"
10
10
  gem "rubystats", ">= 0.2.5"
11
11
  gem "garb", "< 0.9.2", require: false
12
12
  gem "mocha", "~> 1.0", require: false
13
13
  gem "rails", "~>5.2.0"
14
14
  gem "fastthread", platforms: :mri_20, git: "https://github.com/zoltankiss/fastthread.git"
15
- gem "passenger", "~>3.0"
15
+ gem "passenger"
16
16
 
17
17
  group :development do
18
18
  gem "rake"
19
19
  gem "RedCloth"
20
20
  gem "yard"
21
+ gem "rubocop"
22
+ gem "rubocop-performance"
23
+ gem "rubocop-rspec"
21
24
  end
22
25
 
23
26
  platforms :ruby do
24
- gem "sqlite3", "~> 1.3.10"
25
27
  gem "jekyll", "~> 2.5.3"
28
+ gem "sqlite3", "~> 1.3.10"
26
29
  end
27
30
 
28
31
  platforms :jruby do
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: ..
9
9
  specs:
10
- vanity (3.0.2)
10
+ vanity (4.0.1)
11
11
  i18n
12
12
 
13
13
  GEM
@@ -65,6 +65,7 @@ GEM
65
65
  rake
66
66
  thor (>= 0.14.0)
67
67
  arel (9.0.0)
68
+ ast (2.4.2)
68
69
  blankslate (2.1.2.4)
69
70
  bson (4.3.0)
70
71
  bson (4.3.0-java)
@@ -82,7 +83,6 @@ GEM
82
83
  crack (0.4.3)
83
84
  safe_yaml (~> 1.0.0)
84
85
  crass (1.0.4)
85
- daemon_controller (1.2.0)
86
86
  erubi (1.7.1)
87
87
  execjs (2.7.0)
88
88
  fakefs (0.18.0)
@@ -160,11 +160,12 @@ GEM
160
160
  racc (~> 1.4)
161
161
  octokit (4.9.0)
162
162
  sawyer (~> 0.8.0, >= 0.5.3)
163
+ parallel (1.21.0)
164
+ parser (3.1.1.0)
165
+ ast (~> 2.4.1)
163
166
  parslet (1.5.0)
164
167
  blankslate (~> 2.0)
165
- passenger (3.0.21)
166
- daemon_controller (>= 1.0.0)
167
- fastthread (>= 1.0.1)
168
+ passenger (6.0.12)
168
169
  rack
169
170
  rake (>= 0.8.1)
170
171
  posix-spawn (0.3.13)
@@ -181,7 +182,7 @@ GEM
181
182
  yajl-ruby (~> 1.2.0)
182
183
  racc (1.6.0)
183
184
  racc (1.6.0-java)
184
- rack (2.0.5)
185
+ rack (2.2.3)
185
186
  rack-test (1.1.0)
186
187
  rack (>= 1.0, < 3)
187
188
  rails (5.2.0)
@@ -208,7 +209,8 @@ GEM
208
209
  method_source
209
210
  rake (>= 0.8.7)
210
211
  thor (>= 0.18.1, < 2.0)
211
- rake (12.3.1)
212
+ rainbow (3.1.1)
213
+ rake (13.0.6)
212
214
  rb-fsevent (0.10.3)
213
215
  rb-inotify (0.9.10)
214
216
  ffi (>= 0.5.0, < 2)
@@ -216,6 +218,25 @@ GEM
216
218
  redis (4.0.1)
217
219
  redis-namespace (1.6.0)
218
220
  redis (>= 3.0.4)
221
+ regexp_parser (2.2.1)
222
+ rexml (3.2.5)
223
+ rubocop (1.25.1)
224
+ parallel (~> 1.10)
225
+ parser (>= 3.1.0.0)
226
+ rainbow (>= 2.2.2, < 4.0)
227
+ regexp_parser (>= 1.8, < 3.0)
228
+ rexml
229
+ rubocop-ast (>= 1.15.1, < 2.0)
230
+ ruby-progressbar (~> 1.7)
231
+ unicode-display_width (>= 1.4.0, < 3.0)
232
+ rubocop-ast (1.15.2)
233
+ parser (>= 3.0.1.1)
234
+ rubocop-performance (1.13.2)
235
+ rubocop (>= 1.7.0, < 2.0)
236
+ rubocop-ast (>= 0.4.0)
237
+ rubocop-rspec (2.8.0)
238
+ rubocop (~> 1.19)
239
+ ruby-progressbar (1.11.0)
219
240
  ruby_dep (1.5.0)
220
241
  rubystats (0.3.0)
221
242
  safe_yaml (1.0.4)
@@ -245,6 +266,7 @@ GEM
245
266
  parslet (~> 1.5.0)
246
267
  tzinfo (1.2.5)
247
268
  thread_safe (~> 0.1)
269
+ unicode-display_width (2.1.0)
248
270
  webmock (3.4.2)
249
271
  addressable (>= 2.3.6)
250
272
  crack (>= 0.3.2)
@@ -275,13 +297,16 @@ DEPENDENCIES
275
297
  minitest (>= 4.2)
276
298
  mocha (~> 1.0)
277
299
  mongo (~> 2.1)
278
- passenger (~> 3.0)
300
+ passenger
279
301
  pry
280
302
  rack
281
303
  rails (~> 5.2.0)
282
304
  rake
283
305
  redis (>= 3.2.1)
284
306
  redis-namespace (>= 1.1.0)
307
+ rubocop
308
+ rubocop-performance
309
+ rubocop-rspec
285
310
  rubystats (>= 0.2.5)
286
311
  sqlite3 (~> 1.3.10)
287
312
  timecop
@@ -290,4 +315,4 @@ DEPENDENCIES
290
315
  yard
291
316
 
292
317
  BUNDLED WITH
293
- 1.17.2
318
+ 1.17.3
@@ -3,26 +3,29 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rack"
6
+ gem "mongo", "~> 2.1"
6
7
  gem "redis", ">= 3.2.1"
7
8
  gem "redis-namespace", ">= 1.1.0"
8
- gem "mongo", "~> 2.1"
9
9
  gem "integration", "<= 0.1.0"
10
10
  gem "rubystats", ">= 0.2.5"
11
11
  gem "garb", "< 0.9.2", require: false
12
12
  gem "mocha", "~> 1.0", require: false
13
13
  gem "rails", "~>5.2.0"
14
14
  gem "fastthread", platforms: :mri_20, git: "https://github.com/zoltankiss/fastthread.git"
15
- gem "passenger", "~>3.0"
15
+ gem "passenger"
16
16
 
17
17
  group :development do
18
18
  gem "rake"
19
19
  gem "RedCloth"
20
20
  gem "yard"
21
+ gem "rubocop"
22
+ gem "rubocop-performance"
23
+ gem "rubocop-rspec"
21
24
  end
22
25
 
23
26
  platforms :ruby do
24
- gem "sqlite3", "~> 1.3.10"
25
27
  gem "jekyll", "~> 2.5.3"
28
+ gem "sqlite3", "~> 1.3.10"
26
29
  end
27
30
 
28
31
  platforms :jruby do
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: ..
9
9
  specs:
10
- vanity (3.0.2)
10
+ vanity (4.0.1)
11
11
  i18n
12
12
 
13
13
  GEM
@@ -65,6 +65,7 @@ GEM
65
65
  rake
66
66
  thor (>= 0.14.0)
67
67
  arel (9.0.0)
68
+ ast (2.4.2)
68
69
  blankslate (2.1.2.4)
69
70
  bson (4.3.0)
70
71
  bson (4.3.0-java)
@@ -82,7 +83,6 @@ GEM
82
83
  crack (0.4.3)
83
84
  safe_yaml (~> 1.0.0)
84
85
  crass (1.0.4)
85
- daemon_controller (1.2.0)
86
86
  erubi (1.7.1)
87
87
  execjs (2.7.0)
88
88
  fakefs (0.18.0)
@@ -160,11 +160,12 @@ GEM
160
160
  racc (~> 1.4)
161
161
  octokit (4.9.0)
162
162
  sawyer (~> 0.8.0, >= 0.5.3)
163
+ parallel (1.21.0)
164
+ parser (3.1.1.0)
165
+ ast (~> 2.4.1)
163
166
  parslet (1.5.0)
164
167
  blankslate (~> 2.0)
165
- passenger (3.0.21)
166
- daemon_controller (>= 1.0.0)
167
- fastthread (>= 1.0.1)
168
+ passenger (6.0.12)
168
169
  rack
169
170
  rake (>= 0.8.1)
170
171
  posix-spawn (0.3.13)
@@ -181,7 +182,7 @@ GEM
181
182
  yajl-ruby (~> 1.2.0)
182
183
  racc (1.6.0)
183
184
  racc (1.6.0-java)
184
- rack (2.0.5)
185
+ rack (2.2.3)
185
186
  rack-test (1.1.0)
186
187
  rack (>= 1.0, < 3)
187
188
  rails (5.2.0)
@@ -208,7 +209,8 @@ GEM
208
209
  method_source
209
210
  rake (>= 0.8.7)
210
211
  thor (>= 0.18.1, < 2.0)
211
- rake (12.3.1)
212
+ rainbow (3.1.1)
213
+ rake (13.0.6)
212
214
  rb-fsevent (0.10.3)
213
215
  rb-inotify (0.9.10)
214
216
  ffi (>= 0.5.0, < 2)
@@ -216,6 +218,25 @@ GEM
216
218
  redis (4.0.1)
217
219
  redis-namespace (1.6.0)
218
220
  redis (>= 3.0.4)
221
+ regexp_parser (2.2.1)
222
+ rexml (3.2.5)
223
+ rubocop (1.25.1)
224
+ parallel (~> 1.10)
225
+ parser (>= 3.1.0.0)
226
+ rainbow (>= 2.2.2, < 4.0)
227
+ regexp_parser (>= 1.8, < 3.0)
228
+ rexml
229
+ rubocop-ast (>= 1.15.1, < 2.0)
230
+ ruby-progressbar (~> 1.7)
231
+ unicode-display_width (>= 1.4.0, < 3.0)
232
+ rubocop-ast (1.15.2)
233
+ parser (>= 3.0.1.1)
234
+ rubocop-performance (1.13.2)
235
+ rubocop (>= 1.7.0, < 2.0)
236
+ rubocop-ast (>= 0.4.0)
237
+ rubocop-rspec (2.8.0)
238
+ rubocop (~> 1.19)
239
+ ruby-progressbar (1.11.0)
219
240
  ruby_dep (1.5.0)
220
241
  rubystats (0.3.0)
221
242
  safe_yaml (1.0.4)
@@ -245,6 +266,7 @@ GEM
245
266
  parslet (~> 1.5.0)
246
267
  tzinfo (1.2.5)
247
268
  thread_safe (~> 0.1)
269
+ unicode-display_width (2.1.0)
248
270
  webmock (3.4.2)
249
271
  addressable (>= 2.3.6)
250
272
  crack (>= 0.3.2)
@@ -275,13 +297,16 @@ DEPENDENCIES
275
297
  minitest (>= 4.2)
276
298
  mocha (~> 1.0)
277
299
  mongo (~> 2.1)
278
- passenger (~> 3.0)
300
+ passenger
279
301
  pry
280
302
  rack
281
303
  rails (~> 5.2.0)
282
304
  rake
283
305
  redis (>= 3.2.1)
284
306
  redis-namespace (>= 1.1.0)
307
+ rubocop
308
+ rubocop-performance
309
+ rubocop-rspec
285
310
  rubystats (>= 0.2.5)
286
311
  sqlite3 (~> 1.3.10)
287
312
  timecop
@@ -290,4 +315,4 @@ DEPENDENCIES
290
315
  yard
291
316
 
292
317
  BUNDLED WITH
293
- 1.17.2
318
+ 1.17.3
@@ -4,16 +4,16 @@ require 'rails/generators/active_record'
4
4
 
5
5
  class VanityGenerator < Rails::Generators::Base
6
6
  include Rails::Generators::Migration
7
- source_root File.expand_path('../../templates', __FILE__)
7
+ source_root File.expand_path('../templates', __dir__)
8
8
 
9
9
  def self.next_migration_number(path)
10
10
  ::ActiveRecord::Generators::Base.next_migration_number(path)
11
11
  end
12
12
 
13
13
  def create_migration_file
14
- migration_template "vanity_migration.rb.erb", destination("vanity_migration.rb"), :migration_version=>migration_version
15
- migration_template "add_unique_indexes_migration.rb.erb", destination("add_vanity_unique_indexes.rb"), :migration_version=>migration_version
16
- migration_template "add_participants_unique_index_migration.rb.erb", destination("add_participants_unique_index_migration.rb"), :migration_version=>migration_version
14
+ migration_template "vanity_migration.rb.erb", destination("vanity_migration.rb"), migration_version: migration_version
15
+ migration_template "add_unique_indexes_migration.rb.erb", destination("add_vanity_unique_indexes.rb"), migration_version: migration_version
16
+ migration_template "add_participants_unique_index_migration.rb.erb", destination("add_participants_unique_index_migration.rb"), migration_version: migration_version
17
17
  end
18
18
 
19
19
  private
@@ -27,8 +27,6 @@ class VanityGenerator < Rails::Generators::Base
27
27
  end
28
28
 
29
29
  def migration_version
30
- if versioned?
31
- "[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
32
- end
30
+ "[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]" if versioned?
33
31
  end
34
32
  end
@@ -21,100 +21,98 @@ module Vanity
21
21
  def flushdb
22
22
  end
23
23
 
24
-
25
24
  # -- Metrics --
26
25
 
27
26
  # Return when metric was last updated.
28
- def get_metric_last_update_at(metric)
29
- fail "Not implemented"
27
+ def get_metric_last_update_at(_metric)
28
+ raise "Not implemented"
30
29
  end
31
30
 
32
31
  # Track metric data.
33
- def metric_track(metric, timestamp, identity, values)
34
- fail "Not implemented"
32
+ def metric_track(_metric, _timestamp, _identity, _values)
33
+ raise "Not implemented"
35
34
  end
36
35
 
37
36
  # Returns all the metric values between from and to time instances
38
37
  # (inclusive). Returns pairs of date and total count for that date.
39
- def metric_values(metric, from, to)
40
- fail "Not implemented"
38
+ def metric_values(_metric, _from, _to)
39
+ raise "Not implemented"
41
40
  end
42
41
 
43
42
  # Deletes all information about this metric.
44
- def destroy_metric(metric)
45
- fail "Not implemented"
43
+ def destroy_metric(_metric)
44
+ raise "Not implemented"
46
45
  end
47
46
 
48
-
49
47
  # -- Experiments --
50
48
 
51
- def experiment_persisted?(experiment)
52
- fail "Not implemented"
49
+ def experiment_persisted?(_experiment)
50
+ raise "Not implemented"
53
51
  end
54
52
 
55
53
  # Store when experiment was created (do not write over existing value).
56
- def set_experiment_created_at(experiment, time)
57
- fail "Not implemented"
54
+ def set_experiment_created_at(_experiment, _time)
55
+ raise "Not implemented"
58
56
  end
59
57
 
60
58
  # Return when experiment was created.
61
- def get_experiment_created_at(experiment)
62
- fail "Not implemented"
59
+ def get_experiment_created_at(_experiment)
60
+ raise "Not implemented"
63
61
  end
64
62
 
65
63
  # Returns true if experiment completed.
66
- def is_experiment_completed?(experiment)
67
- fail "Not implemented"
64
+ def is_experiment_completed?(_experiment) # rubocop:todo Naming/PredicateName
65
+ raise "Not implemented"
68
66
  end
69
67
 
70
68
  # Store whether an experiment is enabled or not
71
- def set_experiment_enabled(experiment, enabled)
72
- fail "Not implemented"
69
+ def set_experiment_enabled(_experiment, _enabled)
70
+ raise "Not implemented"
73
71
  end
74
72
 
75
73
  # Returns true if experiment is enabled, the default (Vanity.configuration.experiments_start_enabled) is true.
76
74
  # (*except for mock_adapter, where default is true for testing)
77
- def is_experiment_enabled?(experiment)
78
- fail "Not implemented"
75
+ def is_experiment_enabled?(_experiment) # rubocop:todo Naming/PredicateName
76
+ raise "Not implemented"
79
77
  end
80
78
 
81
79
  # Returns counts for given A/B experiment and alternative (by index).
82
80
  # Returns hash with values for the keys :participants, :converted and
83
81
  # :conversions.
84
- def ab_counts(experiment, alternative)
85
- fail "Not implemented"
82
+ def ab_counts(_experiment, _alternative)
83
+ raise "Not implemented"
86
84
  end
87
85
 
88
86
  # Pick particular alternative (by index) to show to this particular
89
87
  # participant (by identity).
90
- def ab_show(experiment, identity, alternative)
91
- fail "Not implemented"
88
+ def ab_show(_experiment, _identity, _alternative)
89
+ raise "Not implemented"
92
90
  end
93
91
 
94
92
  # Indicates which alternative to show to this participant. See #ab_show.
95
- def ab_showing(experiment, identity)
96
- fail "Not implemented"
93
+ def ab_showing(_experiment, _identity)
94
+ raise "Not implemented"
97
95
  end
98
96
 
99
97
  # Cancels previously set association between identity and alternative. See
100
98
  # #ab_show.
101
- def ab_not_showing(experiment, identity)
102
- fail "Not implemented"
99
+ def ab_not_showing(_experiment, _identity)
100
+ raise "Not implemented"
103
101
  end
104
102
 
105
103
  # Records a participant in this experiment for the given alternative.
106
- def ab_add_participant(experiment, alternative, identity)
107
- fail "Not implemented"
104
+ def ab_add_participant(_experiment, _alternative, _identity)
105
+ raise "Not implemented"
108
106
  end
109
107
 
110
108
  # Determines if a participant already has seen this alternative in this experiment.
111
- def ab_seen(experiment, identity, assignment)
112
- fail "Not implemented"
109
+ def ab_seen(_experiment, _identity, _assignment)
110
+ raise "Not implemented"
113
111
  end
114
112
 
115
113
  # Determines what alternative a participant has already been given, if any
116
- def ab_assigned(experiment, identity)
117
- fail "Not implemented"
114
+ def ab_assigned(_experiment, _identity)
115
+ raise "Not implemented"
118
116
  end
119
117
 
120
118
  # Records a conversion in this experiment for the given alternative.
@@ -122,31 +120,31 @@ module Vanity
122
120
  # true, add particpant if not already recorded for this experiment. If
123
121
  # implicit is false (default), only add conversion is participant
124
122
  # previously recorded as participating in this experiment.
125
- def ab_add_conversion(experiment, alternative, identity, count = 1, implicit = false)
126
- fail "Not implemented"
123
+ def ab_add_conversion(_experiment, _alternative, _identity, _count = 1, _implicit = false)
124
+ raise "Not implemented"
127
125
  end
128
126
 
129
127
  # Returns the outcome of this expriment (if set), the index of a
130
128
  # particular alternative.
131
- def ab_get_outcome(experiment)
132
- fail "Not implemented"
129
+ def ab_get_outcome(_experiment)
130
+ raise "Not implemented"
133
131
  end
134
132
 
135
133
  # Sets the outcome of this experiment to a particular alternative.
136
- def ab_set_outcome(experiment, alternative = 0)
137
- fail "Not implemented"
134
+ def ab_set_outcome(_experiment, _alternative = 0)
135
+ raise "Not implemented"
138
136
  end
139
137
 
140
138
  # Deletes all information about this experiment.
141
- def destroy_experiment(experiment)
142
- fail "Not implemented"
139
+ def destroy_experiment(_experiment)
140
+ raise "Not implemented"
143
141
  end
144
142
 
145
143
  private
146
144
 
147
145
  def with_ab_seen_deprecation(experiment, identity, alternative)
148
146
  if alternative.respond_to?(:id)
149
- Vanity.configuration.logger.warn(%q{Deprecated: #ab_seen should be passed the alternative id, not an Alternative instance})
147
+ Vanity.configuration.logger.warn('Deprecated: #ab_seen should be passed the alternative id, not an Alternative instance')
150
148
  yield experiment, identity, alternative.id
151
149
  else
152
150
  yield experiment, identity, alternative