vanity 2.2.8 → 3.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 (54) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +55 -0
  3. data/Appraisals +24 -20
  4. data/CHANGELOG +20 -1
  5. data/Gemfile +2 -1
  6. data/Gemfile.lock +24 -14
  7. data/README.md +118 -34
  8. data/gemfiles/rails42.gemfile +6 -6
  9. data/gemfiles/rails42.gemfile.lock +94 -85
  10. data/gemfiles/rails42_protected_attributes.gemfile +6 -6
  11. data/gemfiles/rails42_protected_attributes.gemfile.lock +96 -74
  12. data/gemfiles/{rails5.gemfile → rails51.gemfile} +6 -6
  13. data/gemfiles/rails51.gemfile.lock +285 -0
  14. data/gemfiles/{rails41.gemfile → rails52.gemfile} +6 -6
  15. data/gemfiles/rails52.gemfile.lock +295 -0
  16. data/gemfiles/{rails32.gemfile → rails60.gemfile} +6 -9
  17. data/gemfiles/rails60.gemfile.lock +293 -0
  18. data/gemfiles/rails61.gemfile +33 -0
  19. data/gemfiles/rails61.gemfile.lock +293 -0
  20. data/lib/generators/templates/add_participants_unique_index_migration.rb.erb +24 -0
  21. data/lib/generators/templates/add_unique_indexes_migration.rb.erb +28 -0
  22. data/lib/generators/templates/{vanity_migration.rb → vanity_migration.rb.erb} +6 -4
  23. data/lib/generators/vanity/migration_generator.rb +34 -0
  24. data/lib/vanity/adapters/active_record_adapter.rb +29 -9
  25. data/lib/vanity/adapters/redis_adapter.rb +20 -20
  26. data/lib/vanity/commands/report.rb +4 -3
  27. data/lib/vanity/frameworks/rails.rb +20 -9
  28. data/lib/vanity/locales/vanity.ru.yml +50 -0
  29. data/lib/vanity/templates/_experiment.erb +3 -3
  30. data/lib/vanity/templates/_experiments.erb +1 -1
  31. data/lib/vanity/templates/_metrics.erb +1 -1
  32. data/lib/vanity/templates/_report.erb +2 -2
  33. data/lib/vanity/templates/vanity.css +5 -5
  34. data/lib/vanity/version.rb +1 -1
  35. data/test/adapters/redis_adapter_test.rb +8 -12
  36. data/test/adapters/shared_tests.rb +7 -6
  37. data/test/commands/report_test.rb +13 -1
  38. data/test/configuration_test.rb +15 -2
  39. data/test/dummy/app/mailers/vanity_mailer.rb +3 -1
  40. data/test/dummy/config/initializers/secret_token.rb +5 -2
  41. data/test/dummy/config/routes.rb +17 -3
  42. data/test/experiment/ab_test.rb +3 -3
  43. data/test/frameworks/rails/action_controller_test.rb +12 -6
  44. data/test/frameworks/rails/action_mailer_test.rb +0 -1
  45. data/test/metric/active_record_test.rb +8 -2
  46. data/test/test_helper.rb +57 -10
  47. data/test/web/rails/dashboard_test.rb +19 -10
  48. data/vanity.gemspec +1 -1
  49. metadata +20 -16
  50. data/.travis.yml +0 -33
  51. data/gemfiles/rails32.gemfile.lock +0 -242
  52. data/gemfiles/rails41.gemfile.lock +0 -230
  53. data/gemfiles/rails5.gemfile.lock +0 -256
  54. data/lib/generators/vanity_generator.rb +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 32b2be75e4a14bf3ce84ba1a49f3ae8b86e6fcf6
4
- data.tar.gz: 40c8689393515ddd853df28130eace503b1327cb
2
+ SHA256:
3
+ metadata.gz: 7481c8ea284e72b569511d54af761ad1626fdfe9246dbb0750fdf56d5f04b2ba
4
+ data.tar.gz: 8ebab61bbb360d445e30d555114a006608693499878cf9655b6765b0148959da
5
5
  SHA512:
6
- metadata.gz: 91931eacb3c34fdf4e9caa8c1ca98b62f0e3cbfd521a58ace103eec63177d28fcfe64646db79d25bb1daeac93dda0814c02dc8d665d2509ccaed30a00c230493
7
- data.tar.gz: 1604cd40d0e73ac1e26a0ba5eebbeaba98e5efa03e23bb50dde6d279325302e8881852808470c3b170b98345d6f36f6d457fdebd4f578404c7b5620f3a1650fb
6
+ metadata.gz: 930f5cd9d45efdbd8bb9463cfe40914d3e6f87a57cd481d1accc5c7bd328aaf2d52e18a132665dc5100deda3f80662bcc96d94ffab76499c05a1c7b5a14aaf68
7
+ data.tar.gz: 0aa058369c4f8218be1837d24bbc9c68e5f27110e9829a97aab1e8183d5748e0f614be9901de4f9fd8b266dceb0342efbe57baef9b320cd17c69db1574575dfc
@@ -0,0 +1,55 @@
1
+ name: Test
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ pull_request:
7
+ branches: '*'
8
+
9
+ jobs:
10
+ test:
11
+ name: Test
12
+ runs-on: ubuntu-latest
13
+ timeout-minutes: 15
14
+ services:
15
+ redis:
16
+ image: redis
17
+ ports:
18
+ - 6379:6379
19
+ mongo:
20
+ image: mongo
21
+ ports:
22
+ - 27017:27017
23
+ strategy:
24
+ matrix:
25
+ ruby:
26
+ - 2.5
27
+ # - jruby-9.2.20.1
28
+ db:
29
+ - mongodb
30
+ - redis
31
+ - active_record
32
+ gemfile:
33
+ - gemfiles/rails42.gemfile
34
+ - gemfiles/rails42_protected_attributes.gemfile
35
+ - gemfiles/rails51.gemfile
36
+ - gemfiles/rails52.gemfile
37
+ - gemfiles/rails60.gemfile
38
+ - gemfiles/rails61.gemfile
39
+ exclude:
40
+ - ruby: jruby-9.1.13.0
41
+ gemfile: gemfiles/rails5.gemfile
42
+ env:
43
+ DB: ${{ matrix.db }}
44
+ BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}
45
+ steps:
46
+ - name: Checkout code
47
+ uses: actions/checkout@v2
48
+
49
+ - name: Set up Ruby
50
+ uses: ruby/setup-ruby@v1
51
+ with:
52
+ ruby-version: ${{ matrix.ruby }}
53
+ bundler-cache: true
54
+ - name: Run Tests
55
+ run: bundle exec rake test
data/Appraisals CHANGED
@@ -1,38 +1,42 @@
1
- appraise "rails32" do
1
+ appraise "rails42" do
2
2
  gem "mocha", "~> 1.0", :require=>false
3
- gem "minitest", "~>4.2.0"
4
- gem "rails", "3.2.22"
5
- gem "minitest_tu_shim", "~> 1.3.3", :platforms => :mri_22
6
- gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
3
+ gem "rails", "4.2.9"
4
+ gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
7
5
  gem "passenger", "~>3.0"
8
- gem "test-unit", "~> 3.0"
9
6
  end
10
7
 
11
- appraise "rails41" do
8
+ appraise "rails42-protected_attributes" do
9
+ gem "protected_attributes", "1.1.0"
12
10
  gem "mocha", "~> 1.0", :require=>false
13
- gem "rails", "4.1.9"
14
- gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
11
+ gem "rails", "4.2.9"
12
+ gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
15
13
  gem "passenger", "~>3.0"
16
14
  end
17
15
 
18
- appraise "rails42" do
16
+ appraise "rails51" do
19
17
  gem "mocha", "~> 1.0", :require=>false
20
- gem "rails", "4.2.0"
21
- gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
18
+ gem "rails", "~>5.1.0"
19
+ gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
22
20
  gem "passenger", "~>3.0"
23
21
  end
24
22
 
25
- appraise "rails42-protected_attributes" do
26
- gem "protected_attributes", "1.1.0"
23
+ appraise "rails52" do
27
24
  gem "mocha", "~> 1.0", :require=>false
28
- gem "rails", "4.2.0"
29
- gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
25
+ gem "rails", "~>5.2.0"
26
+ gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
30
27
  gem "passenger", "~>3.0"
31
28
  end
32
29
 
33
- appraise "rails5" do
30
+ appraise "rails60" do
34
31
  gem "mocha", "~> 1.0", :require=>false
35
- gem "rails", "5.0.0"
36
- gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
32
+ gem "rails", "~>5.2.0"
33
+ gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
37
34
  gem "passenger", "~>3.0"
38
- end
35
+ end
36
+
37
+ appraise "rails61" do
38
+ gem "mocha", "~> 1.0", :require=>false
39
+ gem "rails", "~>5.2.0"
40
+ gem "fastthread", :github => "zoltankiss/fastthread", :platforms => :mri_20
41
+ gem "passenger", "~>3.0"
42
+ end
data/CHANGELOG CHANGED
@@ -1,4 +1,23 @@
1
- == Unreleased
1
+ == 3.0.1 (2022-01-26)
2
+
3
+ * Update template rendering and update_attributes for Rails 6.1 compatibility (@bensheldon)
4
+
5
+ == 3.0.0 (2018-11-02)
6
+
7
+ * Fully destroy experiments using the Redis adapter (@urbanautomaton)
8
+ * Fix support for rails 5.1, 5.2 migrations (@phillbaker)
9
+ * Support for redis 4 (#334) (@askehansen)
10
+ * Drop support for redis-rb <= 3.2.0 (@phillbaker)
11
+ * Drop support for rails 2, test recent rubies (@phillbaker)
12
+
13
+ == 2.2.10 (2018-03-18)
14
+
15
+ * Fix broken table size in report dashboard (#339) (@ilyasovd)
16
+ * Prevent dupe participation in same experiment (#335)(@pihman)
17
+
18
+ == 2.2.9 (2018-02-03)
19
+
20
+ * Fix race condition using the activerecord adapater when vanity creates experiments or rows in the conversions table (@fcheung)
2
21
 
3
22
  == 2.2.8 (2017-09-26)
4
23
  * Rails 5.1 compatibility (#326, #327, #330, @sebjacobs, @bensheldon, @terracatta)
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
2
3
 
3
4
  # "development" gems in gemspec are required for testing, gems in the
4
5
  # development group here are for documentation
@@ -8,7 +9,7 @@ gemspec development_group: :test
8
9
  gem "rack"
9
10
 
10
11
  # Persistence
11
- gem "redis", ">= 2.1"
12
+ gem "redis", ">= 3.2.1"
12
13
  gem "redis-namespace", ">= 1.1.0"
13
14
  gem "mongo", "~> 2.1"
14
15
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vanity (2.2.8)
4
+ vanity (3.0.1)
5
5
  i18n
6
6
 
7
7
  GEM
@@ -15,7 +15,7 @@ GEM
15
15
  activerecord (>= 2.2)
16
16
  activesupport (2.3.14)
17
17
  addressable (2.2.7)
18
- appraisal (1.0.3)
18
+ appraisal (2.4.1)
19
19
  bundler
20
20
  rake
21
21
  thor (>= 0.14.0)
@@ -32,16 +32,19 @@ GEM
32
32
  execjs
33
33
  coffee-script-source (1.9.1)
34
34
  colorator (0.1)
35
+ concurrent-ruby (1.1.9)
35
36
  crack (0.3.1)
36
37
  execjs (2.5.2)
37
38
  fakefs (0.6.7)
38
39
  fast-stemmer (1.0.2)
39
- ffi (1.9.8)
40
+ ffi (1.15.5)
41
+ ffi (1.15.5-java)
40
42
  garb (0.9.1)
41
43
  activesupport (>= 2.2.0)
42
44
  crack (>= 0.1.6)
43
45
  hitimes (1.2.2)
44
- i18n (0.7.0)
46
+ i18n (1.9.0)
47
+ concurrent-ruby (~> 1.0)
45
48
  integration (0.1.0)
46
49
  jdbc-sqlite3 (3.8.7)
47
50
  jekyll (2.5.3)
@@ -85,24 +88,31 @@ GEM
85
88
  coderay (~> 1.1.0)
86
89
  method_source (~> 0.8.1)
87
90
  slop (~> 3.4)
91
+ pry (0.10.3-java)
92
+ coderay (~> 1.1.0)
93
+ method_source (~> 0.8.1)
94
+ slop (~> 3.4)
95
+ spoon (~> 0.0)
88
96
  pygments.rb (0.6.3)
89
97
  posix-spawn (~> 0.3.6)
90
98
  yajl-ruby (~> 1.2.0)
91
99
  rack (1.1.3)
92
- rake (10.1.0)
100
+ rake (13.0.6)
93
101
  rb-fsevent (0.9.4)
94
102
  rb-inotify (0.9.5)
95
103
  ffi (>= 0.5.0)
96
104
  redcarpet (3.2.3)
97
- redis (3.0.6)
98
- redis-namespace (1.3.2)
99
- redis (~> 3.0.4)
105
+ redis (4.0.3)
106
+ redis-namespace (1.6.0)
107
+ redis (>= 3.0.4)
100
108
  rubystats (0.2.5)
101
109
  safe_yaml (1.0.4)
102
110
  sass (3.4.13)
103
111
  slop (3.6.0)
112
+ spoon (0.0.6)
113
+ ffi
104
114
  sqlite3 (1.3.10)
105
- thor (0.19.1)
115
+ thor (1.2.1)
106
116
  timecop (0.3.5)
107
117
  timers (4.0.1)
108
118
  hitimes
@@ -111,8 +121,8 @@ GEM
111
121
  webmock (1.8.0)
112
122
  addressable (>= 2.2.7)
113
123
  crack (>= 0.1.7)
114
- yajl-ruby (1.2.1)
115
- yard (0.7.5)
124
+ yajl-ruby (1.2.3)
125
+ yard (0.9.16)
116
126
 
117
127
  PLATFORMS
118
128
  java
@@ -121,7 +131,7 @@ PLATFORMS
121
131
  DEPENDENCIES
122
132
  RedCloth
123
133
  activerecord-jdbc-adapter
124
- appraisal (~> 1.0.2)
134
+ appraisal (~> 2.0)
125
135
  bundler (>= 1.8.0)
126
136
  fakefs
127
137
  garb (< 0.9.2)
@@ -133,7 +143,7 @@ DEPENDENCIES
133
143
  pry
134
144
  rack
135
145
  rake
136
- redis (>= 2.1)
146
+ redis (>= 3.2.1)
137
147
  redis-namespace (>= 1.1.0)
138
148
  rubystats (>= 0.2.5)
139
149
  sqlite3 (~> 1.3.10)
@@ -143,4 +153,4 @@ DEPENDENCIES
143
153
  yard
144
154
 
145
155
  BUNDLED WITH
146
- 1.11.2
156
+ 1.17.1
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Vanity
2
- [![Build
3
- Status](https://travis-ci.org/assaf/vanity.png?branch=master)](https://travis-ci.org/assaf/vanity)
2
+ [![Test Status](https://github.com/assaf/vanity/workflows/Test/badge.svg)](https://github.com/assaf/vanity/actions)
3
+
4
4
 
5
5
  Vanity is an A/B testing framework for Rails that is datastore agnostic.
6
6
 
@@ -9,13 +9,34 @@ Vanity is an A/B testing framework for Rails that is datastore agnostic.
9
9
 
10
10
  [![Dashboard](doc/images/sidebar_test.png)](http://github.com/assaf/vanity)
11
11
 
12
- ## A/B Testing With Rails
13
-
14
- ### **Step 1:** Start using Vanity in your Rails application
15
-
16
- #### Step 1.1
17
-
18
- ##### Rails 3 & Rails 4 installation
12
+ <!-- toc -->
13
+
14
+ - [Installation](#installation)
15
+ - [Setup](#setup)
16
+ * [Datastore](#datastore)
17
+ + [Redis Setup](#redis-setup)
18
+ + [MongoDB Setup](#mongodb-setup)
19
+ + [SQL Database Setup](#sql-database-setup)
20
+ + [Forking servers and reconnecting](#forking-servers-and-reconnecting)
21
+ * [Initialization](#initialization)
22
+ * [User identification](#user-identification)
23
+ + [Rails](#rails)
24
+ + [Other](#other)
25
+ * [Define a A/B test](#define-a-ab-test)
26
+ * [Present the different options to your users](#present-the-different-options-to-your-users)
27
+ * [Measure conversion](#measure-conversion)
28
+ * [Check the report](#check-the-report)
29
+ + [Rails report dashboard](#rails-report-dashboard)
30
+ - [Registering participants with Javascript](#registering-participants-with-javascript)
31
+ - [Compatibility](#compatibility)
32
+ - [Testing](#testing)
33
+ - [Updating documentation](#updating-documentation)
34
+ - [Contributing](#contributing)
35
+ - [Credits/License](#creditslicense)
36
+
37
+ <!-- tocstop -->
38
+
39
+ ## Installation
19
40
 
20
41
  Add to your Gemfile:
21
42
 
@@ -26,19 +47,21 @@ gem "vanity"
26
47
  (For support for older versions of Rails and Ruby 1.8, please see the [1.9.x
27
48
  branch](https://github.com/assaf/vanity/tree/1-9-stable).)
28
49
 
29
- #### Step 1.2
50
+ ## Setup
51
+
52
+ ### Datastore
30
53
 
31
54
  Choose a datastore that best fits your needs and preferences for storing
32
55
  experiment results. Choose one of: Redis, MongoDB or an SQL database. While
33
56
  Redis is usually faster, it may add additional complexity to your stack.
34
57
  Datastores should be configured using a `config/vanity.yml`.
35
58
 
36
- ##### Redis Setup
59
+ #### Redis Setup
37
60
 
38
61
  Add to your Gemfile:
39
62
 
40
63
  ```ruby
41
- gem "redis", ">= 2.1"
64
+ gem "redis", ">= 3.2"
42
65
  gem "redis-namespace", ">= 1.1.0"
43
66
  ```
44
67
 
@@ -73,7 +96,7 @@ Vanity.connect!(
73
96
  )
74
97
  ```
75
98
 
76
- ##### MongoDB Setup
99
+ #### MongoDB Setup
77
100
 
78
101
  Add to your Gemfile:
79
102
 
@@ -94,7 +117,7 @@ production:
94
117
  database: analytics
95
118
  ```
96
119
 
97
- ##### SQL Database Setup
120
+ #### SQL Database Setup
98
121
 
99
122
  Vanity supports multiple SQL stores (like MySQL, MariaDB, Postgres, Sqlite,
100
123
  etc.) using ActiveRecord, which is built into Rails. If you're using
@@ -116,10 +139,11 @@ test:
116
139
  active_record_adapter: default
117
140
  collecting: false
118
141
  production:
142
+ adapter: active_record
119
143
  active_record_adapter: postgresql
120
144
  <% uri = URI.parse(ENV['DATABASE_URL']) %>
121
145
  host: <%= uri.host %>
122
- username: <%= uri.username %>
146
+ username: <%= uri.user%>
123
147
  password: <%= uri.password %>
124
148
  port: <%= uri.port %>
125
149
  database: <%= uri.path.sub('/', '') %>
@@ -133,7 +157,7 @@ $ rails generate vanity
133
157
  $ rake db:migrate
134
158
  ```
135
159
 
136
- ##### Forking servers and reconnecting
160
+ #### Forking servers and reconnecting
137
161
 
138
162
  If you're using a forking server (like Passenger or Unicorn), you should
139
163
  reconnect after a new worker is created:
@@ -165,7 +189,25 @@ Vanity.connect!(
165
189
  )
166
190
  ```
167
191
 
168
- #### Step 1.3
192
+ ### Initialization
193
+
194
+ If you're using Rails, this is done automagically. Otherwise, some manual setup is required, for example on an app's booting:
195
+
196
+ ```
197
+ $redis = Redis.new # or from elsewhere
198
+ Vanity.configure do |config|
199
+ # ... any config
200
+ end
201
+ Vanity.connect!(
202
+ adapter: :redis,
203
+ redis: $redis
204
+ )
205
+ Vanity.load!
206
+ ```
207
+
208
+ ### User identification
209
+
210
+ #### Rails
169
211
 
170
212
  Turn Vanity on, and pass a reference to a method that identifies a user. For
171
213
  example:
@@ -179,7 +221,28 @@ end
179
221
  For more information, please see the [identity
180
222
  documentation](http://vanity.labnotes.org/identity.html).
181
223
 
182
- ### **Step 2:** Define your first A/B test
224
+ #### Other
225
+
226
+ Vanity pulls the identity from a "context" object that responds to `vanity_identity`, so we need to define a `Vanity.context` (this is how the [ActionMailer integration](https://github.com/assaf/vanity/blob/master/lib/vanity/frameworks/rails.rb#L107-L133) works):
227
+
228
+ ```
229
+ class AVanityContext
230
+ def vanity_identity
231
+ "123"
232
+ end
233
+ end
234
+
235
+ Vanity.context = AVanityContext.new() # Any object that responds to `#vanity_identity`
236
+ ```
237
+
238
+ If you're using plain ruby objects, you could also alias something in your identity model to respond similarly and then set that as the vanity context:
239
+ ```
240
+ class User
241
+ alias_method :vanity_identity, :id
242
+ end
243
+ ```
244
+
245
+ ### Define a A/B test
183
246
 
184
247
  This experiment goes in the file `experiments/price_options.rb`:
185
248
 
@@ -200,15 +263,25 @@ metric "Signup (Activation)" do
200
263
  end
201
264
  ```
202
265
 
203
- ### **Step 3:** Present the different options to your users
266
+ ### Present the different options to your users
267
+
268
+ In Rails' templates, this is straightforward:
204
269
 
205
270
  ```erb
206
271
  <h2>Get started for only $<%= ab_test :price_options %> a month!</h2>
207
272
  ```
208
273
 
209
- ### **Step 4:** Measure conversion
274
+ Outside of templates:
210
275
 
211
- Conversions are created via the `Vanity.track!` method. For example:
276
+ ```
277
+ Vanity.ab_test(:invite_subject)
278
+ ```
279
+
280
+ ### Measure conversion
281
+
282
+ Conversions are created via the `Vanity.track!` method. A user should already be added to an experiment, via `ab_test` before this is called - otherwise, the conversion will be tracked, but the user will not be added to the experiment.
283
+
284
+ For example, in Rails:
212
285
 
213
286
  ```ruby
214
287
  class SignupController < ApplicationController
@@ -224,12 +297,26 @@ class SignupController < ApplicationController
224
297
  end
225
298
  ```
226
299
 
227
- ### **Step 5:** Check the report:
300
+ Outside of an Rails controller, for example in a Rack handler:
301
+
302
+ ```
303
+ identity_object = Identity.new(env['rack.session'])
304
+ Vanity.track!(:click, {
305
+ # can be any object that responds to `to_s` with a string
306
+ # that contains the unique identifier or the string identifier itself
307
+ :identity=>identity_object,
308
+ :values=>[1] # optional
309
+ })
310
+ ```
311
+
312
+ ### Check the report
228
313
 
229
314
  ```sh
230
315
  vanity report --output vanity.html
231
316
  ```
232
317
 
318
+ #### Rails report dashboard
319
+
233
320
  To view metrics and experiment results with the dashboard in Rails 3 & Rails
234
321
  4:
235
322
 
@@ -293,18 +380,15 @@ your view no participants will be recorded.
293
380
 
294
381
  Here's what's tested and known to work:
295
382
 
296
- Ruby 2.1
297
- Persistence: Redis, Mongo, ActiveRecord
298
- Rails: 3.2, 4.1, 4.2
299
- Ruby 2.2
300
- Persistence: Redis, Mongo, ActiveRecord
301
- Rails: 3.2, 4.1, 4.2, 5
302
383
  Ruby 2.3
303
- Persistence: Redis, Mongo, ActiveRecord
304
- Rails: 3.2, 4.1, 4.2, 5
305
- JRuby 1.9
306
- Persistence: Redis, Mongo, ActiveRecord
307
- Rails: 3.2, 4.1, 4.2
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
308
392
 
309
393
  ## Testing
310
394
 
@@ -341,7 +425,7 @@ Go ahead and target a pull request against the `gh-pages` branch.
341
425
  prepare the test suite to run against multiple versions of Rails
342
426
  * Fix, patch, enhance, document, improve, sprinkle pixie dust
343
427
  * Tests. Please. Run `appraisal rake test`, of if you can, `rake test:all`.
344
- (This project uses Travis CI where the test suite is run against multiple
428
+ (This project uses Github Actions where the test suite is run against multiple
345
429
  versions of ruby, rails and backends.)
346
430
  * Send a pull request on GitHub
347
431
 
@@ -3,15 +3,15 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rack"
6
- gem "redis", ">= 2.1"
6
+ gem "redis", ">= 3.2.1"
7
7
  gem "redis-namespace", ">= 1.1.0"
8
8
  gem "mongo", "~> 2.1"
9
9
  gem "integration", "<= 0.1.0"
10
10
  gem "rubystats", ">= 0.2.5"
11
- gem "garb", "< 0.9.2", :require => false
12
- gem "mocha", "~> 1.0", :require => false
13
- gem "rails", "4.2.0"
14
- gem "fastthread", :git => "git://github.com/zoltankiss/fastthread.git", :platforms => :mri_20
11
+ gem "garb", "< 0.9.2", require: false
12
+ gem "mocha", "~> 1.0", require: false
13
+ gem "rails", "4.2.9"
14
+ gem "fastthread", platforms: :mri_20, git: "https://github.com/zoltankiss/fastthread.git"
15
15
  gem "passenger", "~>3.0"
16
16
 
17
17
  group :development do
@@ -30,4 +30,4 @@ platforms :jruby do
30
30
  gem "jdbc-sqlite3"
31
31
  end
32
32
 
33
- gemspec :development_group => :test, :path => "../"
33
+ gemspec development_group: :test, path: "../"