えっちゃんのえっち

えっちゃんがえっちなことするブログ

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/