Rails3にABテストフレームワークVanityを入れてみた
機能改善のため指標を取得したいと思いABテストフレームワークを入れました。
ABingoとか色々あるみたいだけど、とりあえずVanityが簡単に動いたのでとりあえず簡単なテストを作ってみました。
データの置き場としてRedisやMongoDBを利用出来るのですが、今回はMySQLを使ってます。
まず、GemfilesにVanityのパッケージを加える。
gem 'vanity'
今回はMySQLを使用するのでconfig/vanity.ymlを作成し設定する
development: adapter: active_record active_record_adapter: mysql2 host: localhost database: DBNAME user: USERNAME password: PASSWORD
migrationファイルを作成してvanity用のテーブルを作成する。
$ rails g vanity $ rake db:migrate
ダッシュボードの作成を行うためにコントローラを作成する
class VanityController < ApplicationController include Vanity::Rails::Dashboard end
config/routes.rbにダッシュボードへのルートを追加する
match '/vanity(/:action(/:id(.:format)))', :controller=>:vanity
ApplicationControllerにユーザアイデンティティを設定する。
class ApplicationController < ActionController::Base use_vanity :current_user end
Railsのルートディレクトリ下にexperimentsとexperiences/metricsを作成する。
$ mkdir -p experiments/metrics
experiments/metricsに指標を追加する。指標は [指標名].rb の形式でファイルを追加する。
metric "Post" do description "Postした回数" end
コントローラのトラックしたいところへtrack!を追加する
class PostController < ApplicationController def create track! :post # ...投稿する処理 end end end
experimentsにテストを追加する。テストは [テスト名].rb の形式でファイルを作る。
今回はpost_labels.rb
ab_test "Post labels" do description "投稿ラベル" alternatives "投稿する", "うんこする", "ポスト!" metrics :post #テストで調査したい指標を設定 end
ビューにテストを入れこむ。
<button type="submit" value=<%= ab_test :post_labels %>></button>
こんな感じで作る。
参考
https://github.com/assaf/vanity
http://vanity.labnotes.org/