无法在Rails上安装虚荣A / B测试

时间:2014-06-04 05:40:24

标签: ruby-on-rails vanity

我试图在我的Rails应用程序中安装Vanity A/B Testing,但我甚至无法从GitHub页面获取示例。我已经生成了虚荣模型并运行迁移并制作了实验文件,但是只要我加入了像

这样的测试
<%= ab_test :price_options %>

程序抛出错误:

invalid value for Integer(): "{:conditions=>{:experiment_id=>\"price_options\""

在我的controllers / application_controller.rb中我只是:

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  use_vanity
end

我没有包含用户标识符,因为我还没有在这个应用程序中构建一个用户标识符,但是Vanity文档说如果没有提供参数,Vanity将只使用cookie,所以不应该使用#39是一个问题。如果有人知道为什么会抛出这个神秘的错误,我会非常感激!

编辑:我应该补充一点,我实际上是从头开始创建一个新的rails应用程序,只是为了尝试调试它。我所做的就是启动一个应用程序并按照自述文件说明安装虚荣,我也遇到了同样的错误。这也发生在两台不同的机器上,所以我怀疑它是一个显而易见的东西,我不知道,但我无法确定(否则我不会在这里!)。

编辑:我已经决定使用Split宝石,而且没有麻烦。

2 个答案:

答案 0 :(得分:1)

抛出此错误是因为Vanity的当前发行版使用了不推荐使用的Rails find(:first)方法,特别是:

 VanityParticipant.first(:conditions=>{ :experiment_id=>experiment.to_s, :identity=>identity.to_s })

这不再适用于Rails 4.1,但已在Vanity的主分支中修复,因此您可以通过添加以下内容在Rails 4.1应用程序中解决此问题:

gem 'vanity', :git => 'git@github.com:assaf/vanity', :branch => 'master'

到您的Gemfile。

答案 1 :(得分:0)

使用

class ApplicationController < ActionController::Base
  protect_from_forgery
  use_vanity
end

# experiments/price_options.rb
ab_test "Price options" do
  description "Mirror, mirror on the wall, who's the best price of all?"
  alternatives(19, 25, 29)
end

class StaticController < ApplicationController
  def home
  end
end

以下视图加载并设置vanity_id Cookie:

<h1>Static#home</h1>
<p>Find me in app/views/static/home.html.erb</p>

<h2>Get started for only $<%= ab_test :price_options %> a month!</h2>
<%= link_to 'Make a new account', new_account_path %>