vanity 3.1.0 → 4.0.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.
Files changed (90) 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 +5 -0
  8. data/Gemfile +7 -3
  9. data/Gemfile.lock +31 -3
  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 +19 -19
  31. data/lib/vanity/connection.rb +12 -14
  32. data/lib/vanity/experiment/ab_test.rb +82 -70
  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.ru +1 -1
  66. data/test/dummy/script/rails +2 -2
  67. data/test/experiment/ab_test.rb +148 -154
  68. data/test/experiment/base_test.rb +48 -32
  69. data/test/frameworks/rails/action_controller_test.rb +25 -25
  70. data/test/frameworks/rails/action_mailer_test.rb +2 -2
  71. data/test/frameworks/rails/action_view_test.rb +5 -6
  72. data/test/frameworks/rails/rails_test.rb +147 -181
  73. data/test/helper_test.rb +2 -2
  74. data/test/metric/active_record_test.rb +174 -212
  75. data/test/metric/base_test.rb +21 -46
  76. data/test/metric/google_analytics_test.rb +17 -25
  77. data/test/metric/remote_test.rb +7 -10
  78. data/test/playground_test.rb +7 -14
  79. data/test/templates_test.rb +16 -20
  80. data/test/test_helper.rb +28 -29
  81. data/test/vanity_test.rb +4 -10
  82. data/test/web/rails/dashboard_test.rb +21 -21
  83. data/vanity.gemspec +8 -7
  84. metadata +28 -30
  85. data/gemfiles/rails42.gemfile +0 -33
  86. data/gemfiles/rails42.gemfile.lock +0 -265
  87. data/gemfiles/rails42_protected_attributes.gemfile +0 -34
  88. data/gemfiles/rails42_protected_attributes.gemfile.lock +0 -264
  89. data/gemfiles/rails51.gemfile +0 -33
  90. data/gemfiles/rails51.gemfile.lock +0 -285
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c54611b7ef436ec37192b30fa8451ab592b7117df14f3d3937747484b8b9a299
4
- data.tar.gz: 7601b961767d868205a68bf02f5a44447c01f01083f5d53d4a8d7ab242c0f0fc
3
+ metadata.gz: 1ad1912949e23c28cf73f482e50226179db67d52884aa06c3cdb76d73b0581ed
4
+ data.tar.gz: 9fda567ac7fc1c60831e989ff3848f7f80547c35d5ddbb58e8e17121853c7ca0
5
5
  SHA512:
6
- metadata.gz: 60f112ca86a32c938d762699cfc40e24ccb662294ac4059ff12035af6785a3ed294f56ffb2c99c1519bb254fab438062f39cd7b62b87f6df452180066c3d515a
7
- data.tar.gz: 382f2fc0afcc52d375594d2586bb41a46f7bc6f3812d242de725cf9828bbb4c82938daf1e8a29e61ddcdfa82844433f8d5d9dec05d5c960d4a01c4eccf8de203
6
+ metadata.gz: d339c8a7e16db72faa496cb849a6e7ffe1b9056a585070019f920a604055113507260b008664310f96991c039afcdd2708409c743feace6532c44bef17ac14df
7
+ data.tar.gz: 3611523c4dda3382f6300695d4baa3bc87596e018081ffa374e57bb94712276fb2164a6ed931f00148c6f798852227383d603905da9a3f536e4909b286b17253
@@ -0,0 +1,28 @@
1
+ name: Linting
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ - name: Set up Ruby 2.5
12
+ uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: 2.5
15
+ - name: Cache gems
16
+ uses: actions/cache@v1
17
+ with:
18
+ path: vendor/bundle
19
+ key: ${{ runner.os }}-rubocop-${{ hashFiles('**/Gemfile.lock') }}
20
+ restore-keys: |
21
+ ${{ runner.os }}-rubocop-
22
+ - name: Install gems
23
+ run: |
24
+ bundle config path vendor/bundle
25
+ bundle config set without 'default doc job cable storage ujs test db'
26
+ bundle install --jobs 4 --retry 3
27
+ - name: Run RuboCop
28
+ run: bundle exec rubocop --parallel
@@ -30,15 +30,10 @@ jobs:
30
30
  - redis
31
31
  - active_record
32
32
  gemfile:
33
- - gemfiles/rails42.gemfile
34
- - gemfiles/rails42_protected_attributes.gemfile
35
- - gemfiles/rails51.gemfile
36
33
  - gemfiles/rails52.gemfile
37
34
  - gemfiles/rails60.gemfile
38
35
  - gemfiles/rails61.gemfile
39
- exclude:
40
- - ruby: jruby-9.1.13.0
41
- gemfile: gemfiles/rails5.gemfile
36
+
42
37
  env:
43
38
  DB: ${{ matrix.db }}
44
39
  BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}
@@ -51,5 +46,7 @@ jobs:
51
46
  with:
52
47
  ruby-version: ${{ matrix.ruby }}
53
48
  bundler-cache: true
49
+ - name: Info
50
+ run: bundle env
54
51
  - name: Run Tests
55
52
  run: bundle exec rake test
data/.rubocop.yml ADDED
@@ -0,0 +1,114 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ require:
4
+ - rubocop-performance
5
+ - rubocop-rspec
6
+
7
+ inherit_mode:
8
+ merge:
9
+ - Exclude
10
+ - Include
11
+
12
+ AllCops:
13
+ TargetRubyVersion: 2.5
14
+ DisplayCopNames: true
15
+ DisplayStyleGuide: true
16
+ SuggestExtensions: false
17
+ Include:
18
+ - Rakefile
19
+ Exclude:
20
+ - pkg/**/*
21
+ - spec/test_app/**/*
22
+ - vendor/**/*
23
+ - scripts/**/*
24
+ - gemfiles/**/*
25
+ NewCops: enable
26
+
27
+ Layout/EmptyLineAfterMagicComment:
28
+ Enabled: false
29
+
30
+ Layout/HashAlignment:
31
+ Enabled: false
32
+
33
+ Layout/LineLength:
34
+ Max: 500
35
+
36
+ Layout/ParameterAlignment:
37
+ EnforcedStyle: with_fixed_indentation
38
+
39
+ Lint/AmbiguousBlockAssociation:
40
+ Enabled: false
41
+
42
+ Metrics:
43
+ Enabled: false
44
+
45
+ Naming/MemoizedInstanceVariableName:
46
+ EnforcedStyleForLeadingUnderscores: required
47
+
48
+ RSpec/AnyInstance:
49
+ Enabled: false
50
+
51
+ RSpec/DescribeClass:
52
+ Exclude:
53
+ - spec/integration/*
54
+
55
+ RSpec/ExampleLength:
56
+ Enabled: false
57
+
58
+ RSpec/LetSetup:
59
+ Enabled: false
60
+
61
+ RSpec/MessageChain:
62
+ Enabled: false
63
+
64
+ RSpec/MultipleExpectations:
65
+ Enabled: false
66
+
67
+ RSpec/MultipleDescribes:
68
+ Exclude:
69
+ - spec/lib/tasks/*
70
+
71
+ RSpec/NestedGroups:
72
+ Enabled: false
73
+
74
+ RSpec/MultipleMemoizedHelpers:
75
+ Enabled: false
76
+
77
+ Style/Documentation:
78
+ Enabled: false
79
+
80
+ Style/EmptyMethod:
81
+ EnforcedStyle: expanded
82
+
83
+ Style/FormatStringToken:
84
+ Enabled: false
85
+
86
+ Style/MultilineBlockChain:
87
+ Enabled: false
88
+
89
+ Style/NumericLiterals:
90
+ Enabled: false
91
+
92
+ Style/PercentLiteralDelimiters:
93
+ Enabled: false
94
+
95
+ Style/QuotedSymbols:
96
+ Enabled: false
97
+
98
+ Style/RegexpLiteral:
99
+ Enabled: false
100
+
101
+ Style/StringLiterals:
102
+ Enabled: false
103
+
104
+ Style/SymbolArray:
105
+ Enabled: false
106
+
107
+ Style/TrailingCommaInArrayLiteral:
108
+ EnforcedStyleForMultiline: comma
109
+
110
+ Style/TrailingCommaInHashLiteral:
111
+ EnforcedStyleForMultiline: comma
112
+
113
+ Naming/VariableNumber:
114
+ EnforcedStyle: snake_case
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,67 @@
1
+ Style/SpecialGlobalVars:
2
+ Enabled: false
3
+ # Style/FrozenStringLiteralComment:
4
+ # Exclude:
5
+ # - gemfiles/*.gemfile
6
+ Style/FrozenStringLiteralComment:
7
+ Enabled: false
8
+
9
+ Style/MutableConstant:
10
+ Enabled: false
11
+
12
+ Style/ClassAndModuleChildren:
13
+ Enabled: false
14
+
15
+ Performance/Sum:
16
+ Enabled: false
17
+
18
+ Performance/StringInclude:
19
+ Enabled: false
20
+
21
+ Style/StringConcatenation:
22
+ Enabled: false
23
+
24
+ Naming/MemoizedInstanceVariableName:
25
+ Enabled: false
26
+
27
+ Style/GlobalStdStream:
28
+ Enabled: false
29
+
30
+ Style/IdenticalConditionalBranches:
31
+ Enabled: false
32
+
33
+ Performance/InefficientHashSearch:
34
+ Enabled: false
35
+
36
+ Style/NumericPredicate:
37
+ Enabled: false
38
+
39
+ Style/SafeNavigation:
40
+ Enabled: false
41
+
42
+ Style/SymbolProc:
43
+ Enabled: false
44
+
45
+ Lint/UselessMethodDefinition:
46
+ Enabled: false
47
+
48
+ Style/PreferredHashMethods:
49
+ Enabled: false
50
+
51
+ Performance/Count:
52
+ Enabled: false
53
+
54
+ Lint/UselessTimes:
55
+ Enabled: false
56
+
57
+ Style/HashTransformKeys:
58
+ Enabled: false
59
+
60
+ Style/CommentedKeyword:
61
+ Enabled: false
62
+
63
+ Performance/RedundantEqualityComparisonBlock:
64
+ Enabled: false
65
+
66
+ Style/OptionalBooleanParameter:
67
+ Enabled: false
data/Appraisals CHANGED
@@ -1,42 +1,20 @@
1
- appraise "rails42" do
2
- gem "mocha", "~> 1.0", :require=>false
3
- gem "rails", "4.2.9"
4
- gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
5
- gem "passenger", "~>3.0"
6
- end
7
-
8
- appraise "rails42-protected_attributes" do
9
- gem "protected_attributes", "1.1.0"
10
- gem "mocha", "~> 1.0", :require=>false
11
- gem "rails", "4.2.9"
12
- gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
13
- gem "passenger", "~>3.0"
14
- end
15
-
16
- appraise "rails51" do
17
- gem "mocha", "~> 1.0", :require=>false
18
- gem "rails", "~>5.1.0"
19
- gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
20
- gem "passenger", "~>3.0"
21
- end
22
-
23
1
  appraise "rails52" do
24
- gem "mocha", "~> 1.0", :require=>false
2
+ gem "mocha", "~> 1.0", require: false
25
3
  gem "rails", "~>5.2.0"
26
- gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
27
- gem "passenger", "~>3.0"
4
+ gem "fastthread", github: "zoltankiss/fastthread", platforms: :mri_20
5
+ gem "passenger"
28
6
  end
29
7
 
30
8
  appraise "rails60" do
31
- gem "mocha", "~> 1.0", :require=>false
9
+ gem "mocha", "~> 1.0", require: false
32
10
  gem "rails", "~>5.2.0"
33
- gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
34
- gem "passenger", "~>3.0"
11
+ gem "fastthread", github: "zoltankiss/fastthread", platforms: :mri_20
12
+ gem "passenger"
35
13
  end
36
14
 
37
15
  appraise "rails61" do
38
- gem "mocha", "~> 1.0", :require=>false
16
+ gem "mocha", "~> 1.0", require: false
39
17
  gem "rails", "~>5.2.0"
40
- gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
41
- gem "passenger", "~>3.0"
18
+ gem "fastthread", github: "zoltankiss/fastthread", platforms: :mri_20
19
+ gem "passenger"
42
20
  end
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ == 4.0.0 (2022-03-03)
2
+
3
+ * Drop support for Ruby < 2.5 (@frostmark)
4
+ * Drop support for Rails < 5.2 (@bensheldon)
5
+
1
6
  == 3.1.0 (2022-01-29)
2
7
 
3
8
  * Invoke on_assignment callback after assignment is stored in database; add global on_assignment callback (@frostmark)
data/Gemfile CHANGED
@@ -9,20 +9,20 @@ gemspec development_group: :test
9
9
  gem "rack"
10
10
 
11
11
  # Persistence
12
+ gem "mongo", "~> 2.1"
12
13
  gem "redis", ">= 3.2.1"
13
14
  gem "redis-namespace", ">= 1.1.0"
14
- gem "mongo", "~> 2.1"
15
15
 
16
16
  # Math libraries
17
17
  gem "integration", "<= 0.1.0"
18
18
  gem "rubystats", ">= 0.2.5"
19
19
 
20
20
  # APIs
21
- gem "garb", "< 0.9.2", :require => false # API changes at this version
21
+ gem "garb", "< 0.9.2", require: false # API changes at this version
22
22
 
23
23
  platform :ruby do
24
- gem "sqlite3", "~> 1.3.10"
25
24
  gem "jekyll", "~> 2.5.3"
25
+ gem "sqlite3", "~> 1.3.10"
26
26
  end
27
27
 
28
28
  platform :jruby do
@@ -34,4 +34,8 @@ group :development do
34
34
  gem "rake"
35
35
  gem "RedCloth"
36
36
  gem "yard"
37
+
38
+ gem "rubocop"
39
+ gem "rubocop-performance"
40
+ gem "rubocop-rspec"
37
41
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vanity (3.1.0)
4
+ vanity (4.0.0)
5
5
  i18n
6
6
 
7
7
  GEM
@@ -19,6 +19,7 @@ GEM
19
19
  bundler
20
20
  rake
21
21
  thor (>= 0.14.0)
22
+ ast (2.4.2)
22
23
  blankslate (2.1.2.4)
23
24
  bson (4.0.2)
24
25
  bson (4.0.2-java)
@@ -43,7 +44,7 @@ GEM
43
44
  activesupport (>= 2.2.0)
44
45
  crack (>= 0.1.6)
45
46
  hitimes (1.2.2)
46
- i18n (1.9.1)
47
+ i18n (1.10.0)
47
48
  concurrent-ruby (~> 1.0)
48
49
  integration (0.1.0)
49
50
  jdbc-sqlite3 (3.8.7)
@@ -81,6 +82,9 @@ GEM
81
82
  minitest (4.7.5)
82
83
  mongo (2.2.3)
83
84
  bson (~> 4.0)
85
+ parallel (1.21.0)
86
+ parser (3.1.0.0)
87
+ ast (~> 2.4.1)
84
88
  parslet (1.5.0)
85
89
  blankslate (~> 2.0)
86
90
  posix-spawn (0.3.11)
@@ -97,6 +101,7 @@ GEM
97
101
  posix-spawn (~> 0.3.6)
98
102
  yajl-ruby (~> 1.2.0)
99
103
  rack (1.1.3)
104
+ rainbow (3.1.1)
100
105
  rake (13.0.6)
101
106
  rb-fsevent (0.9.4)
102
107
  rb-inotify (0.9.5)
@@ -105,6 +110,25 @@ GEM
105
110
  redis (4.0.3)
106
111
  redis-namespace (1.6.0)
107
112
  redis (>= 3.0.4)
113
+ regexp_parser (2.2.1)
114
+ rexml (3.2.5)
115
+ rubocop (1.25.1)
116
+ parallel (~> 1.10)
117
+ parser (>= 3.1.0.0)
118
+ rainbow (>= 2.2.2, < 4.0)
119
+ regexp_parser (>= 1.8, < 3.0)
120
+ rexml
121
+ rubocop-ast (>= 1.15.1, < 2.0)
122
+ ruby-progressbar (~> 1.7)
123
+ unicode-display_width (>= 1.4.0, < 3.0)
124
+ rubocop-ast (1.15.2)
125
+ parser (>= 3.0.1.1)
126
+ rubocop-performance (1.13.2)
127
+ rubocop (>= 1.7.0, < 2.0)
128
+ rubocop-ast (>= 0.4.0)
129
+ rubocop-rspec (2.8.0)
130
+ rubocop (~> 1.19)
131
+ ruby-progressbar (1.11.0)
108
132
  rubystats (0.2.5)
109
133
  safe_yaml (1.0.4)
110
134
  sass (3.4.13)
@@ -118,6 +142,7 @@ GEM
118
142
  hitimes
119
143
  toml (0.1.2)
120
144
  parslet (~> 1.5.0)
145
+ unicode-display_width (2.1.0)
121
146
  webmock (1.8.0)
122
147
  addressable (>= 2.2.7)
123
148
  crack (>= 0.1.7)
@@ -145,6 +170,9 @@ DEPENDENCIES
145
170
  rake
146
171
  redis (>= 3.2.1)
147
172
  redis-namespace (>= 1.1.0)
173
+ rubocop
174
+ rubocop-performance
175
+ rubocop-rspec
148
176
  rubystats (>= 0.2.5)
149
177
  sqlite3 (~> 1.3.10)
150
178
  timecop
@@ -153,4 +181,4 @@ DEPENDENCIES
153
181
  yard
154
182
 
155
183
  BUNDLED WITH
156
- 1.17.1
184
+ 1.17.3
data/README.md CHANGED
@@ -380,15 +380,10 @@ your view no participants will be recorded.
380
380
 
381
381
  Here's what's tested and known to work:
382
382
 
383
- Ruby 2.3
384
- Persistence: Redis (redis-rb >= 3.2.1), Mongo, ActiveRecord
385
- Rails: 4.1, 4.2, 5
386
- Ruby 2.4
387
- Persistence: Redis (redis-rb >= 3.2.1), Mongo, ActiveRecord
388
- Rails: 4.1, 4.2, 5
389
- JRuby 9.1
390
- Persistence: Redis (redis-rb >= 3.2.1), Mongo, ActiveRecord
391
- Rails: 4.1, 4.2
383
+ Rails: 5.2+
384
+ Ruby: 2.5+
385
+ JRuby: 9.1+
386
+ Persistence: Redis (redis-rb >= 3.2.1), Mongo, ActiveRecord
392
387
 
393
388
  ## Testing
394
389
 
data/Rakefile CHANGED
@@ -1,11 +1,10 @@
1
1
  require "rake/testtask"
2
2
  require "bundler/gem_tasks"
3
3
 
4
-
5
4
  # -- Testing stuff --
6
5
 
7
6
  desc "Test everything"
8
- task "test:all"=>"test:adapters"
7
+ task "test:all" => "test:adapters"
9
8
 
10
9
  # Ruby versions we're testing with.
11
10
  RUBIES = %w{1.9.3 2.0.0 jruby-1.7.13}
@@ -19,7 +18,7 @@ RUBIES = %w{1.9.3 2.0.0 jruby-1.7.13}
19
18
  # Gemfile. If anything goes south you can always wipe these gemsets or uninstall
20
19
  # these Rubies and start over.
21
20
  desc "Test using multiple versions of Ruby"
22
- task "test:rubies", :ruby do |t, args|
21
+ task "test:rubies", :ruby do |_t, args|
23
22
  rubies = args.ruby ? [args.ruby] : RUBIES
24
23
  rubies.each do |ruby|
25
24
  puts "** Setup #{ruby}"
@@ -49,18 +48,17 @@ end
49
48
  ADAPTERS = %w{redis mongodb active_record}
50
49
 
51
50
  desc "Test using different back-ends"
52
- task "test:adapters", :adapter do |t, args|
53
- begin # Make sure we have appraisal installed and available
54
- require "appraisal"
55
-
56
- adapters = args.adapter ? [args.adapter] : ADAPTERS
57
- adapters.each do |adapter|
58
- puts "** Testing #{adapter} adapter"
59
- sh "bundle exec appraisal rake test DB=#{adapter} #{'--trace' if Rake.application.options.trace}"
60
- end
61
- rescue LoadError
62
- warn "The appraisal gem must be available"
51
+ task "test:adapters", :adapter do |_t, args|
52
+ # Make sure we have appraisal installed and available
53
+ require "appraisal"
54
+
55
+ adapters = args.adapter ? [args.adapter] : ADAPTERS
56
+ adapters.each do |adapter|
57
+ puts "** Testing #{adapter} adapter"
58
+ sh "bundle exec appraisal rake test DB=#{adapter} #{'--trace' if Rake.application.options.trace}"
63
59
  end
60
+ rescue LoadError
61
+ warn "The appraisal gem must be available"
64
62
  end
65
63
 
66
64
  # Run the test suit.
@@ -72,29 +70,27 @@ Rake::TestTask.new(:test) do |task|
72
70
  task.warning = false
73
71
  end
74
72
 
75
- task :default=>:test
73
+ task default: :test
76
74
  desc "Run all tests"
77
75
 
78
76
  task(:clobber) { rm_rf "tmp" }
79
77
 
80
-
81
78
  # -- Documenting stuff -- #TODO make sure works under 1.9/2.0
82
79
 
83
80
  desc "Jekyll generates the main documentation (sans API)"
84
81
  task(:jekyll) { sh "jekyll build -s doc -d html" }
85
82
 
86
83
  desc "Create documentation in docs directory"
87
- task :docs=>[:jekyll]
84
+ task docs: [:jekyll]
88
85
 
89
86
  desc "Remove temporary files and directories"
90
87
  task(:clobber) { rm_rf "html" }
91
88
 
92
89
  desc "Publish documentation to vanity.labnotes.org via Github Pages on gh-pages git branch"
93
- task :publish=>[:clobber, :docs] do
90
+ task publish: [:clobber, :docs] do
94
91
  # TODO
95
92
  end
96
93
 
97
-
98
94
  # -- Misc --
99
95
 
100
96
  task :report do
@@ -111,28 +107,33 @@ task :report do
111
107
  # Treatment B 189 28 14.81% -1.13
112
108
  # Treatment C 188 61 32.45% 2.94
113
109
  Vanity.playground.experiment(:null_abc).instance_eval do
114
- fake nil=>[182,35], :red=>[180,45], :green=>[189,28], :blue=>[188,61]
110
+ fake nil => [182, 35], :red => [180, 45], :green => [189, 28], :blue => [188, 61]
115
111
  @created_at = (Date.today - 40).to_time
116
112
  @completed_at = (Date.today - 35).to_time
117
113
  end
118
114
 
119
115
  Vanity.playground.experiment(:age_and_zipcode).instance_eval do
120
- fake false=>[80,35], true=>[84,32]
116
+ fake false => [80, 35], true => [84, 32]
121
117
  @created_at = (Date.today - 30).to_time
122
118
  @completed_at = (Date.today - 15).to_time
123
119
  end
124
120
 
125
121
  Vanity.context = Object.new
126
- Vanity.context.instance_eval { def vanity_identity ; 0 ; end }
122
+ Vanity.context.instance_eval do
123
+ def vanity_identity
124
+ 0
125
+ end
126
+ end
127
127
  signups = 50
128
128
  (Date.today - 90..Date.today).each do |date|
129
129
  Timecop.travel date do
130
- signups += rand(15) - 5
130
+ signups += rand(-5..9)
131
131
  Vanity.playground.track! :signups, signups
132
132
  end
133
133
  end
134
134
 
135
- cheers, yawns = 0, 0
135
+ cheers = 0
136
+ yawns = 0
136
137
  (Date.today - 80..Date.today).each do |date|
137
138
  Timecop.travel date do
138
139
  cheers = cheers - 5 + rand(20)
data/bin/vanity CHANGED
@@ -35,7 +35,7 @@ parser = OptionParser.new("", 24, " ") do |opts|
35
35
  puts opts.to_s.gsub(/^.*DEPRECATED.*$/s, '')
36
36
  exit
37
37
  end
38
- opts.on_tail "-v", "--version", "Show version" do
38
+ opts.on_tail "-v", "--version", "Show version" do
39
39
  puts "Vanity #{Vanity::Version::STRING}"
40
40
  exit
41
41
  end
@@ -51,6 +51,7 @@ Available configuration options are:
51
51
  | cookie_path | The path of the cookie | @nil@ |
52
52
  | cookie_secure | The secure (ssl-only) parameter of the cookie. | @false@ |
53
53
  | cookie_httponly | The httponly parameter of the cookie | @false@ |
54
+ | on_assignment | A proc that called when a new assignment is made for the experiment | @nil@ |
54
55
 
55
56
  When "running under Rails":rails.html, Vanity defaults to using the Rails logger, locates the load_path relative to Rails root, uses the @config/vanity.yml@ configuration file (if present) and turns collection on only in production mode.
56
57
 
@@ -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