lookout-vanity 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. data/.autotest +22 -0
  2. data/.gitignore +10 -0
  3. data/.rvmrc +3 -0
  4. data/.travis.yml +15 -0
  5. data/Appraisals +15 -0
  6. data/CHANGELOG +381 -0
  7. data/Gemfile +25 -0
  8. data/Gemfile.lock +110 -0
  9. data/MIT-LICENSE +21 -0
  10. data/README.rdoc +109 -0
  11. data/Rakefile +169 -0
  12. data/bin/vanity +16 -0
  13. data/doc/_config.yml +2 -0
  14. data/doc/_layouts/_header.html +34 -0
  15. data/doc/_layouts/page.html +47 -0
  16. data/doc/_metrics.textile +12 -0
  17. data/doc/ab_testing.textile +210 -0
  18. data/doc/configuring.textile +45 -0
  19. data/doc/contributing.textile +93 -0
  20. data/doc/credits.textile +23 -0
  21. data/doc/css/page.css +83 -0
  22. data/doc/css/print.css +43 -0
  23. data/doc/css/syntax.css +7 -0
  24. data/doc/email.textile +129 -0
  25. data/doc/experimental.textile +31 -0
  26. data/doc/faq.textile +8 -0
  27. data/doc/identity.textile +43 -0
  28. data/doc/images/ab_in_dashboard.png +0 -0
  29. data/doc/images/clear_winner.png +0 -0
  30. data/doc/images/price_options.png +0 -0
  31. data/doc/images/sidebar_test.png +0 -0
  32. data/doc/images/signup_metric.png +0 -0
  33. data/doc/images/vanity.png +0 -0
  34. data/doc/index.textile +91 -0
  35. data/doc/metrics.textile +231 -0
  36. data/doc/rails.textile +89 -0
  37. data/doc/site.js +27 -0
  38. data/gemfiles/rails3.gemfile +20 -0
  39. data/gemfiles/rails3.gemfile.lock +135 -0
  40. data/gemfiles/rails31.gemfile +20 -0
  41. data/gemfiles/rails31.gemfile.lock +146 -0
  42. data/gemfiles/rails32.gemfile +20 -0
  43. data/gemfiles/rails32.gemfile.lock +144 -0
  44. data/generators/templates/vanity_migration.rb +53 -0
  45. data/generators/vanity_generator.rb +8 -0
  46. data/lib/generators/templates/vanity_migration.rb +53 -0
  47. data/lib/generators/vanity_generator.rb +15 -0
  48. data/lib/vanity.rb +36 -0
  49. data/lib/vanity/adapters/abstract_adapter.rb +145 -0
  50. data/lib/vanity/adapters/active_record_adapter.rb +263 -0
  51. data/lib/vanity/adapters/mock_adapter.rb +157 -0
  52. data/lib/vanity/adapters/mongodb_adapter.rb +178 -0
  53. data/lib/vanity/adapters/redis_adapter.rb +160 -0
  54. data/lib/vanity/backport.rb +26 -0
  55. data/lib/vanity/commands/list.rb +21 -0
  56. data/lib/vanity/commands/report.rb +64 -0
  57. data/lib/vanity/commands/upgrade.rb +34 -0
  58. data/lib/vanity/experiment/ab_test.rb +582 -0
  59. data/lib/vanity/experiment/base.rb +218 -0
  60. data/lib/vanity/frameworks.rb +16 -0
  61. data/lib/vanity/frameworks/rails.rb +325 -0
  62. data/lib/vanity/helpers.rb +71 -0
  63. data/lib/vanity/images/x.gif +0 -0
  64. data/lib/vanity/metric/active_record.rb +93 -0
  65. data/lib/vanity/metric/base.rb +244 -0
  66. data/lib/vanity/metric/google_analytics.rb +83 -0
  67. data/lib/vanity/metric/remote.rb +53 -0
  68. data/lib/vanity/playground.rb +408 -0
  69. data/lib/vanity/templates/_ab_test.erb +28 -0
  70. data/lib/vanity/templates/_experiment.erb +5 -0
  71. data/lib/vanity/templates/_experiments.erb +7 -0
  72. data/lib/vanity/templates/_metric.erb +14 -0
  73. data/lib/vanity/templates/_metrics.erb +13 -0
  74. data/lib/vanity/templates/_report.erb +27 -0
  75. data/lib/vanity/templates/_vanity.js.erb +20 -0
  76. data/lib/vanity/templates/flot.min.js +1 -0
  77. data/lib/vanity/templates/jquery.min.js +19 -0
  78. data/lib/vanity/templates/vanity.css +26 -0
  79. data/lib/vanity/templates/vanity.js +82 -0
  80. data/lib/vanity/version.rb +11 -0
  81. data/lookout-vanity.gemspec +26 -0
  82. data/test/adapters/redis_adapter_test.rb +17 -0
  83. data/test/dummy/Rakefile +7 -0
  84. data/test/dummy/app/controllers/application_controller.rb +3 -0
  85. data/test/dummy/app/helpers/application_helper.rb +2 -0
  86. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  87. data/test/dummy/config.ru +4 -0
  88. data/test/dummy/config/application.rb +44 -0
  89. data/test/dummy/config/boot.rb +10 -0
  90. data/test/dummy/config/database.yml +5 -0
  91. data/test/dummy/config/environment.rb +5 -0
  92. data/test/dummy/config/environments/development.rb +26 -0
  93. data/test/dummy/config/environments/production.rb +49 -0
  94. data/test/dummy/config/environments/test.rb +35 -0
  95. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  96. data/test/dummy/config/initializers/inflections.rb +10 -0
  97. data/test/dummy/config/initializers/mime_types.rb +5 -0
  98. data/test/dummy/config/initializers/secret_token.rb +7 -0
  99. data/test/dummy/config/initializers/session_store.rb +8 -0
  100. data/test/dummy/config/locales/en.yml +5 -0
  101. data/test/dummy/config/routes.rb +58 -0
  102. data/test/dummy/public/favicon.ico +0 -0
  103. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  104. data/test/dummy/script/rails +6 -0
  105. data/test/experiment/ab_test.rb +859 -0
  106. data/test/experiment/base_test.rb +150 -0
  107. data/test/experiments/age_and_zipcode.rb +19 -0
  108. data/test/experiments/metrics/cheers.rb +3 -0
  109. data/test/experiments/metrics/signups.rb +2 -0
  110. data/test/experiments/metrics/yawns.rb +3 -0
  111. data/test/experiments/null_abc.rb +5 -0
  112. data/test/metric/active_record_test.rb +307 -0
  113. data/test/metric/base_test.rb +293 -0
  114. data/test/metric/google_analytics_test.rb +104 -0
  115. data/test/metric/remote_test.rb +109 -0
  116. data/test/myapp/app/controllers/application_controller.rb +2 -0
  117. data/test/myapp/app/controllers/main_controller.rb +7 -0
  118. data/test/myapp/config/boot.rb +110 -0
  119. data/test/myapp/config/environment.rb +10 -0
  120. data/test/myapp/config/environments/production.rb +0 -0
  121. data/test/myapp/config/routes.rb +3 -0
  122. data/test/passenger_test.rb +45 -0
  123. data/test/playground_test.rb +26 -0
  124. data/test/rails_dashboard_test.rb +37 -0
  125. data/test/rails_helper_test.rb +38 -0
  126. data/test/rails_test.rb +412 -0
  127. data/test/test_helper.rb +168 -0
  128. metadata +268 -0
data/.autotest ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ Autotest.add_hook :initialize do |autotest|
3
+ %w{.git .DS_Store Gemfile bin doc html}.each do |exception|
4
+ autotest.add_exception(exception)
5
+ end
6
+ autotest.clear_mappings
7
+ autotest.add_mapping(/^test.*\/.*_test\.rb$/) { |filename, _| filename }
8
+ autotest.add_mapping(/test_helper.rb/) { |f, _| autotest.files_matching(/test\/.*_test\.rb$/) }
9
+ autotest.add_mapping(/^lib\/vanity\/(.*)\.rb/) do |filename, _|
10
+ file = File.basename(filename, '.rb')
11
+ dir = File.split(File.dirname(filename)).last
12
+ autotest.files_matching %r%^test/(#{file}|#{dir})_test.rb$%
13
+ end
14
+ end
15
+
16
+
17
+ # Don't run entire test suite when going from red to green
18
+ class Autotest
19
+ def tainted
20
+ false
21
+ end
22
+ end
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ .bundle
2
+ .yardoc
3
+ *.gem
4
+ html
5
+ test/myapp/log/
6
+ vendor
7
+ log/*
8
+ test/dummy/db/*.sqlite3
9
+ test/dummy/log/*.log
10
+ test/dummy/tmp/
data/.rvmrc ADDED
@@ -0,0 +1,3 @@
1
+ export RUBYOPT="rubygems"
2
+ export RUBYLIB="."
3
+ rvm 1.9.2
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ bundler_args: --without development
3
+ script: 'rake appraisal test'
4
+ rvm:
5
+ - 1.8.7
6
+ - 1.9.3
7
+ env:
8
+ - DB=mongodb
9
+ - DB=redis
10
+ - DB=mysql
11
+ #- DB=postgres
12
+ before_script:
13
+ - "mysql -e 'create database vanity_test;' >/dev/null"
14
+ - "rake appraisal:install"
15
+ #- "psql -c 'create database vanity_test;' -U postgres >/dev/null"
data/Appraisals ADDED
@@ -0,0 +1,15 @@
1
+ appraise "rails3" do
2
+ gem "rails", "3.0.11"
3
+ gem "passenger", "~>3.0"
4
+ end
5
+
6
+ appraise "rails31" do
7
+ gem "rails", "3.1.3"
8
+ gem "passenger", "~>3.0"
9
+ end
10
+
11
+ appraise "rails32" do
12
+ gem "rails", "3.2.1"
13
+ gem "passenger", "~>3.0"
14
+ end
15
+
data/CHANGELOG ADDED
@@ -0,0 +1,381 @@
1
+ == 1.8.0 (2012-03-12)
2
+
3
+ Improved support for Rails 3.1 and Rails 3.2. Thanks to masverba, Daan and IsaacLewis.
4
+
5
+ Finer Grained Exceptions for Missing Experiments (Nick Barnwell)
6
+
7
+
8
+ == 1.7.1 (2011-09-30)
9
+
10
+ Minor change in locating config file (Ariel Salomon)
11
+
12
+ Allow for table names in specified :timestamps (Peter Kovacs)
13
+
14
+ When a named scope includes a join, created_at can be ambiguous. Use
15
+
16
+ metric "Sky is limit" do
17
+ model Sky, :timestamp => 'skies.created_at'
18
+ end
19
+
20
+ to disambiguate.
21
+
22
+ Make vanity_identity method private on controller; ensure no default route
23
+ (Ariel Salomon)
24
+
25
+ Add Rails 2.3-compatible generator (Ariel Salomon)
26
+
27
+ Lazy Playground initialization for rails 3.1 (Jonathan del Strother)
28
+
29
+ Update documentation to reflect that host, port, and database options for redis
30
+ connections are deprecated in favor of using the connection option with a URI
31
+ (Patrick Joyce)
32
+
33
+
34
+ == 1.7.0 (2011-08-27)
35
+
36
+ 1.7.0 adds support for ActionMailer, for example:
37
+
38
+ class UserMailer < ActionMailer::Base
39
+ def invite_email(user)
40
+ use_vanity_mailer user
41
+ mail :to => user.email, :subject => ab_test(:invite_subject)
42
+ end
43
+ end
44
+
45
+ See the documentation for more details.
46
+
47
+
48
+ With 1.7.0 and moving forward, if you need to setup a database schema
49
+ (relational databases only), please use the generator:
50
+
51
+ $ rails generate vanity
52
+ $ rake db:migrate
53
+
54
+
55
+ Rails generator for AR migrations (Zaid Zawaideh)
56
+
57
+ A/B testing in ActionMailer (Joseph Sofaer)
58
+
59
+ Fix hung passenger processes when using Redis client (Chris Griego)
60
+
61
+
62
+ == 1.6.1 (2011-07-20)
63
+
64
+ Fixed cookie domain setting.
65
+
66
+
67
+ == 1.6.0 (2011-07-18)
68
+
69
+ If robots or spiders make up a significant portion of your sites traffic they
70
+ can affect your conversion rate. Vanity can optionally add participants to the
71
+ experiments using asynchronous JavaScript callbacks, which will keep almost all
72
+ robots out. To set this up simply do the following:
73
+
74
+ 1. Vanity.playground.use_js!
75
+ 2. Set Vanity.playground.add_participant_path = '/path/to/vanity/action'
76
+ 3. Add <%= Vanity.vanity_js %> to the bottom of any view that needs to set up
77
+ an ab_test
78
+
79
+
80
+ Fix for metrics on rails 3 models (Esteban Pastorino).
81
+
82
+ Use JavaScript to report participants, useful for ignoring bots on publicly
83
+ accessible pages (Doug Cole).
84
+
85
+ AbTest#choose returns an Alternative rather than just the value (Doug Cole).
86
+
87
+ Add warnings instead of swallowing errors (Anthony Eden).
88
+
89
+ Fixing broken test for mongodb adapter (Joshua Krall).
90
+
91
+ Fix returning correct experiment when in test mode and manually set via
92
+ #chooses (Ryan Sonnek).
93
+
94
+ Don't round the conversion rate before using it, it affects the test results,
95
+ making them less accurate (Doug Cole).
96
+
97
+ Fixed loading config from yml when using other than redis adapter (Arttu Tervo)
98
+
99
+ Default to localhost unless host in config file (Arttu Tervo)
100
+
101
+ Fixed mongo connection adapter connect! when called after disconnect! (Arttu
102
+ Tervo)
103
+
104
+ Use mongo replica set connection if multiple hosts were given in YAML
105
+ configuration file (Arttu Tervo)
106
+
107
+ Cookie domain from rails configuration (Arttu Tervo)
108
+
109
+ Add bson_ext to Gemfile to load C extension for mongodb ruby driver, and
110
+ prevent Notice messages as the tests run (tenaciousflea)
111
+
112
+ Update redis-namespace dependency to 1.0 (Ville Lautanala)
113
+
114
+
115
+ == 1.5.3 (2011-04-11)
116
+
117
+ Added number of participants and number of converted participants to ab_test
118
+ template (Avishai Weiss).
119
+
120
+
121
+ == 1.5.2 (2011-04-11)
122
+
123
+ Fixed to work with redis-rb 2.2.0 (Kevin Menard).
124
+
125
+ Fixed to work with Postgresql: it complained that the index names generated by
126
+ add_index were too long, so I gave them shorter names (Robert Rasmussen).
127
+
128
+ Fixed SQL errors comparing an int to a varchar column, and no "as" on a column
129
+ alias (Robert Rasmussen).
130
+
131
+ Fixed auto-escaped text in the experiment template that I marked as html_safe
132
+ (Robert Rasmussen).
133
+
134
+ Added some Rails 3.x documentation to the 2-minute demo instructionsa (Andy Atkinson).
135
+
136
+ Fix to set collecting flag from vanity.yml config file.
137
+
138
+
139
+ == 1.5.1 (2010-12-20)
140
+
141
+ Fixes some minor bugs in RoR when including the Dashboard (netguru)
142
+
143
+
144
+ == 1.5.0 (2010-10-23)
145
+
146
+ Note: MongoDB URI scheme changed from mongo: to mongodb: to be consistent with
147
+ the rest of the civilized world. If you get an error because Vanity can't find
148
+ the MongoDB adapter, fear not! It's still there, just need to update your
149
+ config/vanity.yml file.
150
+
151
+
152
+ Rails 3 support (Adam Keys, Stephen Celis, Brian Leonard, Ryan Carver)
153
+
154
+ Changed MongoDB URI scheme from 'mongo://' to the standard 'mongodb://' and
155
+ renamed the mongodb adapter filename to make it match (JS Boulanger)
156
+
157
+ Added support for ERB in YAML configuration files (JS Boulanger)
158
+
159
+ Fixed initialization of playground's Rails defaults such that they can be
160
+ overriden in the environment (JS Boulanger)
161
+
162
+
163
+ == 1.4.0 (2010-08-06)
164
+
165
+ Note: Run this command to upgrade your database to 1.4, or you will not have
166
+ access to collected metrics and experiment data:
167
+
168
+ vanity upgrade
169
+
170
+
171
+ Connection adapters! We have a new way for managing connections which extends
172
+ to multiple adapters (not just Redis). The easiest is to use the configuration
173
+ file config/vanity.yml. For example:
174
+
175
+ development:
176
+ adapter: redis
177
+ production:
178
+ adapter: mongodb
179
+
180
+ We get to keep Redis, add new MongoDB adapter, but lose Mock. It's still there,
181
+ but there's a new way to use Vanity outside production: you can turn data
182
+ collection on/off.
183
+
184
+ Under Rails, data collection is turned off in all environments except
185
+ production. To turn if on/off:
186
+
187
+ Vanity.playground.collecting = true/false.
188
+
189
+
190
+ This release switches to latest Redis gem and uses redis-namespace (what took
191
+ me so long?) If your own code relies on the Redis gem, watch out: there are
192
+ some subtle incompatibilities between 1.x and 2.x.
193
+
194
+
195
+ Now using RVM, gemsets and Bundler to test Vanity in different configurations.
196
+ To run the full set of tests in all the supported versions of Ruby:
197
+ rake test:rubies
198
+ To test specific version of Ruby:
199
+ rake test:rubies[1.8.7]
200
+ To switch around:
201
+ rvm 1.9.2@vanity
202
+
203
+ * Added: Adapter API, see Vanity::Adapters::AbstractAdapter and
204
+ Vanity::Adapters::RedisAdapter.
205
+ * Added: MongoDB support.
206
+ * Added: Upgrade command.
207
+ * Added: Metric.last_update_at.
208
+ * Added: Vanity.playground.collecting. You want this to be true only in
209
+ production environment. When false, disables collecting of metric and
210
+ experiment data.
211
+ * Added: Remote metrics. Push data to remote service.
212
+ * Added: Partial support for multi-series metrics. Laying the ground for the
213
+ future.
214
+ * Change: Vanity.playground.redis and redis= methods are deprecated, use
215
+ connection and establish_connection instead.
216
+ * Removed: Metric.created_at, derived from experiment and never used.
217
+
218
+
219
+ == 1.3.0 (2010-03-01)
220
+
221
+ This release adds support for Google Analytics, AdWords and forking servers
222
+ (Passenger, Unicorn).
223
+
224
+ To view Google Analytics metrics from within Vanity, first make sure you are
225
+ using Garb. For example, in your Gemfile:
226
+
227
+ gem "vanity", "1.3.0"
228
+ gem "garb", "0.5.0"
229
+
230
+ Next, authenticate using your account credentials. For example, in your
231
+ config/environments/production.rb:
232
+
233
+ require "garb"
234
+ Garb::Session.login('..email..', '..password..', account_type: "GOOGLE") rescue nil
235
+
236
+ Last, define Vanity metrics that tap to Google Analytics metrics. For example:
237
+
238
+ metric "Acquisition: Visitors" do
239
+ description "Unique visitors on any given page, as tracked by Google Analytics"
240
+ google_analytics "UA-1828623-6", :visitors
241
+ end
242
+
243
+ * 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/
244
+ * 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.
245
+ * Added: Command line "vanity list" catalogs all ongoing experiments, their alternatives (and fingerprints) and all metrics.
246
+ * Added: Playground.reconnect!, particularly useful when forking (Passenger, Unicorn, etc).
247
+ * Added: Vanity loads Redis configuration from config/redis.yml (if you have such a file).
248
+ * Changed: New way to specify connection configuration: Vanity.playground.redis = "localhost:6379". Use this instead of the separate host/port/db attribute.
249
+ * Changed: Rails integration now separates use_vanity method, filters and helpers.
250
+ * Changed: Explicit vanity_context_filter and vanity_reload_filter so you can skip them, or order filters relative to them.
251
+ * Fixed: If metric cannot be loaded (e.g. offline, no db access) show error message for that metric but don't break dashboard.
252
+ * Fixed: AbTest incorrectly calls identify method instead of identity (issue #2)
253
+ * Fixed: Running vanity command, automatically detects and loads Rails.
254
+ * Fixed: Vanity now picks up on load_path set from within config/environment.rb.
255
+ * 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.
256
+
257
+ == 1.2.0 (2009-12-14)
258
+ This release introduces metrics backed by ActiveRecord. Use them when your model is already tracking a metric, and you get instant historical data.
259
+
260
+ Example, track sign ups using User model:
261
+
262
+ metric "Signups" do
263
+ model Account
264
+ end
265
+
266
+ Example, track satisfaction using Survey model:
267
+ metric "Satisfaction" do
268
+ model Survey, :average=>:rating
269
+ end
270
+
271
+ Example, track only high ratings:
272
+ metric "High ratings" do
273
+ model Rating, :conditions=>["stars >= 4"]
274
+ end
275
+
276
+ There's no need to call track! on these metrics.
277
+
278
+ * Added: Metrics backed by ActiveRecord.
279
+ * Added: track! and ab_test methods now available from Object (i.e. everywhere).
280
+ * Added: Playground.load!. Now loading all metrics and experiments from Rails initializer.
281
+ * 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).
282
+ * Changed: Metrics no longer defined on-demand, i.e. calling playground.metric either returns existing metric or raises exception.
283
+ * Changed: Playground.experiments returns hash instead of array.
284
+ * Changed: All dates in report are UTC, since we don't know which locale to use.
285
+ * Removed: Object.experiment is deprecated, please call Vanity.playground.experiment directly.
286
+ * Fixed: Playground no longer changes logging level on supplied logger.
287
+
288
+ == 1.1.1 (2009-12-4)
289
+ * Fixed: Binding issue that shows up on 1.8.6/7.
290
+
291
+ == 1.1.0 (2009-12-4)
292
+ This release introduces metrics. Metrics are the gateway drug to better software.
293
+
294
+ It’s as simple as defining a metric:
295
+
296
+ metric "Cheers" do
297
+ description "They love us, don't they?"
298
+ end
299
+
300
+ Tracking it from your code:
301
+
302
+ track! :cheers
303
+
304
+ And watching the graph from the Dashboard.
305
+
306
+ You can (should) also use metrics with your A/B tests, for example:
307
+
308
+ ab_test "Pricing options" do
309
+ metrics :signup
310
+ alternatives 15, 25, 29
311
+ end
312
+
313
+ This new usage may become requirement in a future release.
314
+
315
+ Much thanks to Ian Sefferman for fixing issues with Ruby 1.8.7 and Rails support.
316
+
317
+ * Added: Metrics.
318
+ * Added: Use Vanity.playground.mock! when running tests and you'd rather not access a live Redis server.
319
+ * Changed: A/B tests now using metrics for tracking.
320
+ * Changed: Now throwing NameError instead of LoadError when failing to load experiment/metric. NameError can be rescued on same line.
321
+ * Changed: New, easier URL mapping for Dashboard: map.vanity "/vanity", :controller=>:vanity.
322
+ * Changed: All tests are green on Ruby 1.8.6, 1.8.7 and 1.9.1.
323
+ * Changed: Switched to redis-rb from http://github.com/ezmobius/redis-rb.
324
+ * Deprecated: Please call experiment method with experiment identifier (a symbol) and not experiment name.
325
+
326
+ == 1.0.0 (2009-11-19)
327
+ 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:
328
+
329
+ ab_test "My A/B test" do
330
+ alternatives :a, :b
331
+ end
332
+
333
+ 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.
334
+
335
+ In addition, the ab_goal! method is now track!. This method may be used for other tests in the future.
336
+
337
+ * Added: A/B test report now showing number of participants.
338
+ * Added: AbTest.score method accepts minimum probability (default 90), and
339
+ * Removed: Experiment.reset! method. Destroy and save have the same effect.
340
+ * Changed: Playground.define now requires an experiment type, ab_test is not the default any more.
341
+ * 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!.
342
+ * Changed: Fancy AJAX trickery in Rails console.
343
+ * Changed: You can break long experiment descriptions into multiple paragraphs using two consecutive newlines.
344
+ * Changed: AbTest confidence becomes probability; only returns choice alternative with probability equal or higher than that.
345
+ * Changed: ab_goal! becomes track!.
346
+ * Changed: Console becomes Dashboard, which is less confusing with rails console (script/console).
347
+
348
+ == 0.3.1 (2009-11-13)
349
+ * Changed: Redis 1.0 is now vendored into Vanity. This means one less dependecy ... actually two, since Redis brings with it RSpec.
350
+
351
+ == 0.3.0 (2009-11-13)
352
+ * Added: score now includes least performing alternatives, names and values.
353
+ * Added: shiny reports.
354
+ * Added: Rails console shows current experiments status and also allows you to choose which alternative you want to see.
355
+ * Changed: letters instead of numbers for options (option 1 => option A).
356
+ * Changed: experiment.alternatives is now an immutable snapshot.
357
+ * Changed: experiment.score returns populated alternative objects instead of structs.
358
+ * Changed: experiment.chooses uses Redis to store state, better for (when we get to) browser integration.
359
+ * Changed: experiment.chooses skips recording participant or conversion.
360
+ * Changed: to MIT license.
361
+
362
+ == 0.2.2 (2009-11-12)
363
+ * Added: vanity binary, with single command for generating a report.
364
+ * Added: return alternative by value from experiment.alternative(val) method.
365
+ * Added: reset an experiment by calling reset!.
366
+ * Added: experiment alternative name (option 1, option 2, etc).
367
+ * Added: new scoring algorithm: use experiment.score instead of alternative.z_score/confidence.
368
+ * Added: experiment.conclusion for plain English results.
369
+
370
+ == 0.2.1 (2009-11-11)
371
+ * Added: z-score and confidence level for A/B test alternatives.
372
+ * Added: test auto-completion and auto-outcome (complete_it, outcome_is).
373
+ * Changed: default alternatives are now false/true, so if can't decide outcome, fall back on false.
374
+
375
+ == 0.2.0 (2009-11-10)
376
+ * Added: experiment method on object, used to define and access experiments.
377
+ * Added: playground configuration (Vanity.playground.namespace = , etc).
378
+ * Added: use_vanity now accepts block instead of symbol.
379
+ * Changed: Vanity::Helpers becomes Vanity::Rails.
380
+ * Changed: A/B test experiments alternatives now handled using Alternatives object.
381
+ * Removed: A/B test measure method no longer in use.