
Vanity 与 Rails 集成7 个步骤在 Rails 5/6/7 项目中启用 A/B 测试【免费下载链接】vanityExperiment Driven Development for Ruby项目地址: https://gitcode.com/gh_mirrors/va/vanityVanity 是一个面向 Ruby 与 Rails 的 A/B 测试框架以「实验驱动开发Experiment Driven Development」为核心理念让你无需自研埋点系统就能在 Rails 项目中快速启用 A/B 测试。本教程将用 7 个清晰的步骤带你完成 Vanity 与 Rails 集成覆盖从安装、配置到查看实验报告的完整流程并兼容 Rails 5.2、6.x 与 7.x 项目。为什么选择 Vanity 做 Rails A/B 测试对于 Rails 开发者来说Vanity 的优势非常直观存储无关实验数据可以存放在 Redis、MongoDB 或关系型数据库ActiveRecord中完全由你的基础设施决定原生 Rails 集成通过use_vanity一行声明即可接入控制器视图层直接使用ab_test帮助方法自带可视化仪表盘不用额外开发后台就能查看每个实验的参与者、转化率与统计显著性多版本 Rails 兼容项目官方在 Rails 5.2、6.0、6.1gemfiles 目录中均有对应配置上持续测试4.x 版本同样兼容 Ruby 2.5。第 1 步安装 Vanity gem在 Gemfile 中添加依赖并安装这是最基础的集成动作gem vanity然后执行bundle install。如果你选择 Redis 作为数据存储还需要在 Gemfile 中加入gem redis, 3.2 gem redis-namespace, 1.1.0第 2 步创建数据存储配置文件Vanity 会读取项目根目录下的config/vanity.yml并根据当前环境development / test / production加载对应配置。以下是一个 Redis 方案的示例development: adapter: redis url: redis://localhost:6379/0 test: adapter: redis collecting: false production: adapter: redis url: redis://% ENV[REDIS_HOST] %:% ENV[REDIS_PORT] %/0如果项目使用 SQL 数据库MySQL、PostgreSQL、SQLite 等可将 adapter 改为active_record复用 Rails 现有连接。测试环境建议设置collecting: false这样测试时不会写入任何实验数据。第 3 步初始化数据库并运行迁移采用 ActiveRecord 存储时需要先执行生成器创建迁移文件再运行迁移rails generate vanity rake db:migrate生成器会创建实验表、指标表以及对应的唯一索引迁移相关实现见 lib/generators/vanity/migration_generator.rb。所有适配器Redis、MongoDB、ActiveRecord的实现位于 lib/vanity/adapters/例如 redis_adapter.rb。第 4 步开启用户身份识别A/B 测试的核心是区分「谁看到了哪个版本」。在ApplicationController中调用use_vanity并传入一个返回当前用户的方法即可class ApplicationController ActionController::Base use_vanity :current_user def current_user User.find(session[:user_id]) end enduse_vanity会为控制器注入身份识别过滤器与跟踪过滤器当用户未登录时它会通过 Cookie 自动生成匿名身份并跨请求记住具体逻辑见 lib/vanity/frameworks/rails.rb。同时你还可以给邮件ActionMailer传入身份让邮件模板也参与实验。第 5 步定义你的第一个 A/B 测试在experiments/目录下创建实验定义文件例如experiments/price_options.rbab_test Price options do description 测试三个定价档位哪个转化率最高 alternatives 19, 25, 29 metrics :signups end对应地在experiments/metrics/signups.rb中定义转化指标metric Signup do description 衡量成功注册的用户数量 end一个实验需要至少两个 alternative备选方案未指定默认方案时会取第一个。实验类AbTest的完整定义默认值、权重分配、评分逻辑等见 lib/vanity/experiment/ab_test.rb。第 6 步在页面中展示实验并跟踪转化在视图模板中通过ab_test帮助方法读取当前用户被分配到的方案h2只需 % ab_test(:price_options) % 美元/月立即开始/h2当用户完成关键动作如注册、购买时调用Vanity.track!记录转化class SignupController ApplicationController def create account Account.new(params[:account]) if account.save Vanity.track!(:signups) redirect_to account else render action: :offer end end end注意转化跟踪前用户应已通过ab_test加入实验否则只会记录转化而不会计入实验参与者。第 7 步查看实验报告与仪表盘有两种方式查看实验结果命令行报告运行vanity report命令即可输出 HTML 格式的完整报告包含每个备选方案的参与者数量、转化率与胜出概率。Web 仪表盘在config/routes.rb中加入以下路由get /vanity vanity#index get /vanity/participant/:id vanity#participant post /vanity/complete post /vanity/chooses post /vanity/reset post /vanity/enable post /vanity/disable并创建控制器class VanityController ApplicationController include Vanity::Rails::Dashboard layout false end之后访问/vanity即可看到实时仪表盘直接对实验执行启用、禁用、重置与指定胜出方案等操作。仪表盘视图模板位于 lib/vanity/templates/如需定制可运行rails g vanity:views把默认视图复制到app/views/vanity再自由修改。生产环境提示Forking 服务器重连如果使用 Unicorn、Passenger 这类会 fork 工作进程的服务器务必在 fork 后重新建立数据库连接避免多个 worker 共享同一连接导致数据竞争# config/unicorn.rb after_fork do |server, worker| defined?(Vanity) Vanity.reconnect! end总结通过以上 7 个步骤你就完成了 Vanity 与 Rails 集成在 Rails 5/6/7 项目中正式启用了 A/B 测试安装 gem、配置数据存储、初始化数据库、声明用户身份、定义实验、展示方案并跟踪转化、最后通过仪表盘观察数据。官方文档还提供了更深入的配置项说明如use_js异步注册参与者、Cookie 参数定制等详见 doc/configuring.textile 与 doc/rails.textile。现在就去定义一个实验让数据替你做决策吧【免费下载链接】vanityExperiment Driven Development for Ruby项目地址: https://gitcode.com/gh_mirrors/va/vanity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考