This repository has been archived by the owner on Jan 1, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 270
/
CHANGELOG
543 lines (369 loc) · 21.2 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
CHANGELOG
== 4.0.4 (2022-11-28)
* Support Psych 4 safe_load (@mcg)
== 4.0.3 (2022-07-27)
* Fix Vanity::Rails::Helpers#vanity_js for Rails 6 (@ariel-codes)
== 4.0.2 (2022-03-03)
* Use Redis#exists? and fallback to #exists which could be either boolean or integer in recent redis gem versions (@bsedin)
== 4.0.1 (2022-03-06)
* Fix YAML alias support in `vanity.yml` (@frostmark)
== 4.0.0 (2022-03-03)
* Drop support for Ruby < 2.5 (@frostmark)
* Drop support for Rails < 5.2 (@bensheldon)
== 3.1.0 (2022-01-29)
* Invoke on_assignment callback after assignment is stored in database; add global on_assignment callback (@frostmark)
== 3.0.2 (2022-01-27)
* Fix AbTest#alternative_for to always prefer persisted participants (@tgrathwell)
== 3.0.1 (2022-01-26)
* Update template rendering and update_attributes for Rails 6.1 compatibility (@bensheldon)
== 3.0.0 (2018-11-02)
* Fully destroy experiments using the Redis adapter (@urbanautomaton)
* Fix support for rails 5.1, 5.2 migrations (@phillbaker)
* Support for redis 4 (#334) (@askehansen)
* Drop support for redis-rb <= 3.2.0 (@phillbaker)
* Drop support for rails 2, test recent rubies (@phillbaker)
== 2.2.10 (2018-03-18)
* Fix broken table size in report dashboard (#339) (@ilyasovd)
* Prevent dupe participation in same experiment (#335)(@pihman)
== 2.2.9 (2018-02-03)
* Fix race condition using the activerecord adapater when vanity creates experiments or rows in the conversions table (@fcheung)
== 2.2.8 (2017-09-26)
* Rails 5.1 compatibility (#326, #327, #330, @sebjacobs, @bensheldon, @terracatta)
== 2.2.7 (2016-12-21)
* Fix 'base 17' typo, correct id bucketing (#308, @bazzargh)
* Update docs about `rebalance_frequency` (#310, @sdhull)
* Resolve Rails 5 deprecation warning for Mime::HTML (#313, @terracatta)
* Update MockAdapter and testing using it (#316, #309 @urbanautomaton)
* Deprecate calling #ab_seen with alternative instance (#317, @urbanautomaton)
== 2.2.6 (2016-10-04)
* Fixes for `Vanity.ab_test()` vs. view helper `ab_test` (@phillbaker)
== 2.2.5 (2016-9-23)
* Updates for rails5 compatbility (@phillbaker)
== 2.2.4 (2016-9-21)
* Fix typo in template (@arthurxaud)
== 2.2.3 (2016-6-25)
* Add Norwegian Bokmal locale (@theodorton)
== 2.2.2 (2016-5-30)
* Revert most of the changes in 2.2.1 because of unintended side effects (see #295) (@phillbaker)
== 2.2.1 (2016-4-5)
* Fix ActiveRecord Migration using separate database (@phillbaker)
== 2.2.0 (2016-3-26)
* Update mongo integration for mongo ruby driver 2.x. (@phillbaker)
* Centralize warnings to use `Vanity.logger` (@phillbaker)
== 2.1.2 (2016-2-20)
* Fix infinite loop on loading Vanity when using Redis and Redis fails to connect. #292 (@phillbaker)
== 2.1.1 (2016-1-15)
* Allow method passed to `use_vanity` to return NullObjects. (@phillbaker)
* Add testing support for ruby 2.3. (@phillbaker)
* Add `reject` method to experiment definition. #290 (@peterkovacs)
== 2.1.0 (2016-1-19)
Add ability to define test alternatives with custom probabilities, #283. (@peterkovacs)
Allow ActiveRecord model metrics to provide their own identity source, #285. (@peterkovacs)
Add individual cookie options for name, domain, path, secure, and httponly properties of the cookie in the `Vanity.configuration`, #282. (@peterkovacs)
Update default_request_filter to exclude more bots, #284. (@peterkovacs)
Remove testing support for ruby 1.9.3. (@phillbaker)
Remove testing support for rails 4.0. (@phillbaker)
Add attr_accessible for VanityConversion model alternative attribute (@mikem836)
== 2.0.0 (2015-12-14)
Extract configuration from Vanity::Playground to Vanity::Configuration (@phillbaker)
Remove `track!` and `ab_test` from the global scope, they're now available on the `Vanity` module. (@phillbaker)
Reduce test frameworks to just minitest (@phillbaker)
Replace deprecated ActiveRecord finders (@bogdan-dumitru, @leematos, @aaronjensen)
Add date to vanity_metric_values index (@aaronjensen)
Fix insecure wildcard route (@modosc)
Introduce Ruby 2.2 support. (@sebjacobs)
Added support for testing against jruby. (@Matt343)
Adding internationalization to reports (@teonimesic)
Allow Rails applications to override default views (@rsslldnphy)
Add support to reset experiments (@davidguthu)
== 1.9.0 (2014-04-20)
Include db:reset in blacklist for autoconnect. (@phillbaker)
Add grace period to Vanity::Metric updated_at (@stangel)
Add timestamps to vanity_participants (@inkredabull)
Use sqlite3 for all active record adapter tests & updates to test tasks (@phillbaker)
Fix ActiveRecord participant retrieval with non-primitive identities. (@phillbaker)
Replace instance variables with locals to fix CLI. (@phillbaker)
Replace js encoding with server-side call. (@phillbaker)
== 1.9.0 (2014-01-18)
Change order of preference for vanity identity, from highest to lowest: URL param, cookie, method call, assignment. (@phillbaker)
Add Playground#request_filter for AbTest#choose(s) (@phillbaker)
Call on_assignment and perform rebalance when using js (@tmandry)
Add Adapter#experiment_persisted? and check before showing Dashboard. (@phillbaker)
Show info message at top of report if not collection (@hellochar)
Add gracefull failover when redis is down/unreachable. (@phillbaker)
Update README and documentation for clarity. (@nextmat)
Remove hard Redis gem dependency from gemspec. (@phillbaker)
Update appraisal to v1.0.0. (@phillbaker)
== 1.8.3 (2013-11-20)
Add support for Rails 4. (@phillbaker)
Update redis gem depedendencies. (@phillbaker)
Add Bayesian multi-armed bandit scoring for experiments as an alternative to the standard A/B calculations, as well as periodic alternative rebalancing based on alternative performance (@lotze).
Add 'complete' UI functionality to the dashboard to complete an experiment from the rails web interface (@lotze).
Gem maintenance: license specification to gemspec, remove .rvmrc file (@phillbaker).
Add #ab_assigned to adapters: to get an array of the experiments a specific identity is assigned to, as well as a controller action to display those assignments (@lotze).
== 1.8.2 (2013-10-27)
Optimize metric_values query (@zawaideh).
Add an on_assignment hook for experiments which is called when an identity is given an assignment in ab_test (@lotze)
Finish Ruby 2.0 compatiblity with testing setup and add ActionMailer test coverage (@phillbaker).
== 1.8.1 (2013-10-05)
Added vanity_experiments helper for rails to return read only copy of active experiments (@iceberg901).
Fixed support for Mass Assignment on Rails 3.2 (@hcarver).
Fixed commandline usage (@phillbaker).
== 1.8.0 (2012-03-12)
Improved support for Rails 3.1 and Rails 3.2. Thanks to masverba, Daan and IsaacLewis.
Finer Grained Exceptions for Missing Experiments (Nick Barnwell)
== 1.7.1 (2011-09-30)
Minor change in locating config file (Ariel Salomon)
Allow for table names in specified :timestamps (Peter Kovacs)
When a named scope includes a join, created_at can be ambiguous. Use
metric "Sky is limit" do
model Sky, :timestamp => 'skies.created_at'
end
to disambiguate.
Make vanity_identity method private on controller; ensure no default route
(Ariel Salomon)
Add Rails 2.3-compatible generator (Ariel Salomon)
Lazy Playground initialization for rails 3.1 (Jonathan del Strother)
Update documentation to reflect that host, port, and database options for redis
connections are deprecated in favor of using the connection option with a URI
(Patrick Joyce)
== 1.7.0 (2011-08-27)
1.7.0 adds support for ActionMailer, for example:
class UserMailer < ActionMailer::Base
def invite_email(user)
use_vanity_mailer user
mail :to => user.email, :subject => ab_test(:invite_subject)
end
end
See the documentation for more details.
With 1.7.0 and moving forward, if you need to setup a database schema
(relational databases only), please use the generator:
$ rails generate vanity
$ rake db:migrate
Rails generator for AR migrations (Zaid Zawaideh)
A/B testing in ActionMailer (Joseph Sofaer)
Fix hung passenger processes when using Redis client (Chris Griego)
== 1.6.1 (2011-07-20)
Fixed cookie domain setting.
== 1.6.0 (2011-07-18)
If robots or spiders make up a significant portion of your sites traffic they
can affect your conversion rate. Vanity can optionally add participants to the
experiments using asynchronous JavaScript callbacks, which will keep almost all
robots out. To set this up simply do the following:
1. Vanity.playground.use_js!
2. Set Vanity.playground.add_participant_path = '/path/to/vanity/action'
3. Add <%= Vanity.vanity_js %> to the bottom of any view that needs to set up
an ab_test
Fix for metrics on rails 3 models (Esteban Pastorino).
Use JavaScript to report participants, useful for ignoring bots on publicly
accessible pages (Doug Cole).
AbTest#choose returns an Alternative rather than just the value (Doug Cole).
Add warnings instead of swallowing errors (Anthony Eden).
Fixing broken test for mongodb adapter (Joshua Krall).
Fix returning correct experiment when in test mode and manually set via
#chooses (Ryan Sonnek).
Don't round the conversion rate before using it, it affects the test results,
making them less accurate (Doug Cole).
Fixed loading config from yml when using other than redis adapter (Arttu Tervo)
Default to localhost unless host in config file (Arttu Tervo)
Fixed mongo connection adapter connect! when called after disconnect! (Arttu
Tervo)
Use mongo replica set connection if multiple hosts were given in YAML
configuration file (Arttu Tervo)
Cookie domain from rails configuration (Arttu Tervo)
Add bson_ext to Gemfile to load C extension for mongodb ruby driver, and
prevent Notice messages as the tests run (tenaciousflea)
Update redis-namespace dependency to 1.0 (Ville Lautanala)
== 1.5.3 (2011-04-11)
Added number of participants and number of converted participants to ab_test
template (Avishai Weiss).
== 1.5.2 (2011-04-11)
Fixed to work with redis-rb 2.2.0 (Kevin Menard).
Fixed to work with Postgresql: it complained that the index names generated by
add_index were too long, so I gave them shorter names (Robert Rasmussen).
Fixed SQL errors comparing an int to a varchar column, and no "as" on a column
alias (Robert Rasmussen).
Fixed auto-escaped text in the experiment template that I marked as html_safe
(Robert Rasmussen).
Added some Rails 3.x documentation to the 2-minute demo instructionsa (Andy Atkinson).
Fix to set collecting flag from vanity.yml config file.
== 1.5.1 (2010-12-20)
Fixes some minor bugs in RoR when including the Dashboard (netguru)
== 1.5.0 (2010-10-23)
Note: MongoDB URI scheme changed from mongo: to mongodb: to be consistent with
the rest of the civilized world. If you get an error because Vanity can't find
the MongoDB adapter, fear not! It's still there, just need to update your
config/vanity.yml file.
Rails 3 support (Adam Keys, Stephen Celis, Brian Leonard, Ryan Carver)
Changed MongoDB URI scheme from 'mongo://' to the standard 'mongodb://' and
renamed the mongodb adapter filename to make it match (JS Boulanger)
Added support for ERB in YAML configuration files (JS Boulanger)
Fixed initialization of playground's Rails defaults such that they can be
overriden in the environment (JS Boulanger)
== 1.4.0 (2010-08-06)
Note: Run this command to upgrade your database to 1.4, or you will not have
access to collected metrics and experiment data:
vanity upgrade
Connection adapters! We have a new way for managing connections which extends
to multiple adapters (not just Redis). The easiest is to use the configuration
file config/vanity.yml. For example:
development:
adapter: redis
production:
adapter: mongodb
We get to keep Redis, add new MongoDB adapter, but lose Mock. It's still there,
but there's a new way to use Vanity outside production: you can turn data
collection on/off.
Under Rails, data collection is turned off in all environments except
production. To turn if on/off:
Vanity.playground.collecting = true/false.
This release switches to latest Redis gem and uses redis-namespace (what took
me so long?) If your own code relies on the Redis gem, watch out: there are
some subtle incompatibilities between 1.x and 2.x.
Now using RVM, gemsets and Bundler to test Vanity in different configurations.
To run the full set of tests in all the supported versions of Ruby:
rake test:rubies
To test specific version of Ruby:
rake test:rubies[1.8.7]
To switch around:
rvm 1.9.2@vanity
* Added: Adapter API, see Vanity::Adapters::AbstractAdapter and
Vanity::Adapters::RedisAdapter.
* Added: MongoDB support.
* Added: Upgrade command.
* Added: Metric.last_update_at.
* Added: Vanity.playground.collecting. You want this to be true only in
production environment. When false, disables collecting of metric and
experiment data.
* Added: Remote metrics. Push data to remote service.
* Added: Partial support for multi-series metrics. Laying the ground for the
future.
* Change: Vanity.playground.redis and redis= methods are deprecated, use
connection and establish_connection instead.
* Removed: Metric.created_at, derived from experiment and never used.
== 1.3.0 (2010-03-01)
This release adds support for Google Analytics, AdWords and forking servers
(Passenger, Unicorn).
To view Google Analytics metrics from within Vanity, first make sure you are
using Garb. For example, in your Gemfile:
gem "vanity", "1.3.0"
gem "garb", "0.5.0"
Next, authenticate using your account credentials. For example, in your
config/environments/production.rb:
require "garb"
Garb::Session.login('..email..', '..password..', account_type: "GOOGLE") rescue nil
Last, define Vanity metrics that tap to Google Analytics metrics. For example:
metric "Acquisition: Visitors" do
description "Unique visitors on any given page, as tracked by Google Analytics"
google_analytics "UA-1828623-6", :visitors
end
* Added: Support for Google Analytics metrics, thanks to Tony Pitale's Garb and blog post: http://www.viget.com/extend/user-goal-tracking-in-rails-with-vanity-and-google-analytics/
* Added: Vanity query parameter that you can use to choose a particular alternative, e.g. to tie an advertisement banner with content of the site.
* Added: Command line "vanity list" catalogs all ongoing experiments, their alternatives (and fingerprints) and all metrics.
* Added: Playground.reconnect!, particularly useful when forking (Passenger, Unicorn, etc).
* Added: Vanity loads Redis configuration from config/redis.yml (if you have such a file).
* Changed: New way to specify connection configuration: Vanity.playground.redis = "localhost:6379". Use this instead of the separate host/port/db attribute.
* Changed: Rails integration now separates use_vanity method, filters and helpers.
* Changed: Explicit vanity_context_filter and vanity_reload_filter so you can skip them, or order filters relative to them.
* Fixed: If metric cannot be loaded (e.g. offline, no db access) show error message for that metric but don't break dashboard.
* Fixed: AbTest incorrectly calls identify method instead of identity (issue #2)
* Fixed: Running vanity command, automatically detects and loads Rails.
* Fixed: Vanity now picks up on load_path set from within config/environment.rb.
* Removed: Vanity.playground.define is deprecated. Bad choice for a method name. If you need this feature, make a suggestion and let's create a better API.
== 1.2.0 (2009-12-14)
This release introduces metrics backed by ActiveRecord. Use them when your model is already tracking a metric, and you get instant historical data.
Example, track sign ups using User model:
metric "Signups" do
model Account
end
Example, track satisfaction using Survey model:
metric "Satisfaction" do
model Survey, :average=>:rating
end
Example, track only high ratings:
metric "High ratings" do
model Rating, :conditions=>["stars >= 4"]
end
There's no need to call track! on these metrics.
* Added: Metrics backed by ActiveRecord.
* Added: track! and ab_test methods now available from Object (i.e. everywhere).
* Added: Playground.load!. Now loading all metrics and experiments from Rails initializer.
* Changed: Decoupled metric name from identifier. You can now define a metric with more descriptive name, e.g. "Cheers per second (user satisfaction)" and keep their ID simple. Identifier is matched against the file name (for metrics loaded from experiments/metrics).
* Changed: Metrics no longer defined on-demand, i.e. calling playground.metric either returns existing metric or raises exception.
* Changed: Playground.experiments returns hash instead of array.
* Changed: All dates in report are UTC, since we don't know which locale to use.
* Removed: Object.experiment is deprecated, please call Vanity.playground.experiment directly.
* Fixed: Playground no longer changes logging level on supplied logger.
== 1.1.1 (2009-12-4)
* Fixed: Binding issue that shows up on 1.8.6/7.
== 1.1.0 (2009-12-4)
This release introduces metrics. Metrics are the gateway drug to better software.
It’s as simple as defining a metric:
metric "Cheers" do
description "They love us, don't they?"
end
Tracking it from your code:
track! :cheers
And watching the graph from the Dashboard.
You can (should) also use metrics with your A/B tests, for example:
ab_test "Pricing options" do
metrics :signup
alternatives 15, 25, 29
end
This new usage may become requirement in a future release.
Much thanks to Ian Sefferman for fixing issues with Ruby 1.8.7 and Rails support.
* Added: Metrics.
* Added: Use Vanity.playground.mock! when running tests and you'd rather not access a live Redis server.
* Changed: A/B tests now using metrics for tracking.
* Changed: Now throwing NameError instead of LoadError when failing to load experiment/metric. NameError can be rescued on same line.
* Changed: New, easier URL mapping for Dashboard: map.vanity "/vanity", :controller=>:vanity.
* Changed: All tests are green on Ruby 1.8.6, 1.8.7 and 1.9.1.
* Changed: Switched to redis-rb from http://github.com/ezmobius/redis-rb.
* Deprecated: Please call experiment method with experiment identifier (a symbol) and not experiment name.
== 1.0.0 (2009-11-19)
This release changes the way you define a new experiment. You can use a method suitable for the type of experiment you want to define, or call the generic define method (previously: experiment method). For example:
ab_test "My A/B test" do
alternatives :a, :b
end
The experiment method is no longer overloaded: it looks up an experiment (loading its definition if necessary), but does not define an experiment. The ab_test method is overloaded, though this may change in the future.
In addition, the ab_goal! method is now track!. This method may be used for other tests in the future.
* Added: A/B test report now showing number of participants.
* Added: AbTest.score method accepts minimum probability (default 90), and
* Removed: Experiment.reset! method. Destroy and save have the same effect.
* Changed: Playground.define now requires an experiment type, ab_test is not the default any more.
* Changed: When you run Vanity in development mode (configuration.cache_classes = false), it will reload experiments on each request. You can also Vanity.playground.reload!.
* Changed: Fancy AJAX trickery in Rails console.
* Changed: You can break long experiment descriptions into multiple paragraphs using two consecutive newlines.
* Changed: AbTest confidence becomes probability; only returns choice alternative with probability equal or higher than that.
* Changed: ab_goal! becomes track!.
* Changed: Console becomes Dashboard, which is less confusing with rails console (script/console).
== 0.3.1 (2009-11-13)
* Changed: Redis 1.0 is now vendored into Vanity. This means one less dependecy ... actually two, since Redis brings with it RSpec.
== 0.3.0 (2009-11-13)
* Added: score now includes least performing alternatives, names and values.
* Added: shiny reports.
* Added: Rails console shows current experiments status and also allows you to choose which alternative you want to see.
* Changed: letters instead of numbers for options (option 1 => option A).
* Changed: experiment.alternatives is now an immutable snapshot.
* Changed: experiment.score returns populated alternative objects instead of structs.
* Changed: experiment.chooses uses Redis to store state, better for (when we get to) browser integration.
* Changed: experiment.chooses skips recording participant or conversion.
* Changed: to MIT license.
== 0.2.2 (2009-11-12)
* Added: vanity binary, with single command for generating a report.
* Added: return alternative by value from experiment.alternative(val) method.
* Added: reset an experiment by calling reset!.
* Added: experiment alternative name (option 1, option 2, etc).
* Added: new scoring algorithm: use experiment.score instead of alternative.z_score/confidence.
* Added: experiment.conclusion for plain English results.
== 0.2.1 (2009-11-11)
* Added: z-score and confidence level for A/B test alternatives.
* Added: test auto-completion and auto-outcome (complete_it, outcome_is).
* Changed: default alternatives are now false/true, so if can't decide outcome, fall back on false.
== 0.2.0 (2009-11-10)
* Added: experiment method on object, used to define and access experiments.
* Added: playground configuration (Vanity.playground.namespace = , etc).
* Added: use_vanity now accepts block instead of symbol.
* Changed: Vanity::Helpers becomes Vanity::Rails.
* Changed: A/B test experiments alternatives now handled using Alternatives object.
* Removed: A/B test measure method no longer in use.