Split logo

Split

Rack‑based A/B testing framework for Rails, Sinatra, and more

A Redis‑backed A/B testing library for Ruby rack apps, offering weighted alternatives, URL overrides, and built‑in statistical analysis.

Split banner

Overview

Overview

Split is a rack‑compatible A/B testing framework designed for Ruby web applications such as Rails and Sinatra. It stores experiment data in Redis (v4+), enabling fast, persistent tracking of user variants and conversions.

Capabilities

Developers can define experiments with simple ab_test calls, apply weighted exposure, and force variants via URL parameters. Split provides two statistical engines—a z‑test for classic two‑variant tests and beta‑distribution simulations for multi‑variant scenarios, with configurable recalculation intervals. A manual start option lets teams control when experiments become active.

Deployment

Add the split gem to your Gemfile, configure a Redis instance, and include the helper in your app. The library works out‑of‑the‑box with Rails and Sinatra, and offers an RSpec helper for deterministic testing. No additional UI is bundled; experiment management is handled through the Split dashboard.

Highlights

Rack‑compatible, works with Rails, Sinatra, or any Rack app
Redis‑backed storage with support for Redis 4+
Weighted alternatives and URL‑based overrides for fine‑grained control
Built‑in statistical analysis (z‑test & beta‑simulation) with configurable recalculation

Pros

  • Easy integration into existing Ruby web apps
  • Highly extensible and hacker‑friendly
  • Real‑time significance reporting
  • Supports manual experiment start

Considerations

  • Requires a Redis server
  • Statistical methods need a minimum sample size (30+ participants)
  • Beta‑simulation can be slow for many experiments
  • No native graphical UI for experiment management

Managed products teams compare with

When teams consider Split, these hosted platforms usually appear on the same shortlist.

Hypertune logo

Hypertune

Type-safe feature flags platform with A/B testing, analytics, and app configuration optimized for TypeScript

LaunchDarkly logo

LaunchDarkly

Feature flag management platform for safe software releases with targeting, experimentation, and rollback capabilities

Reflag logo

Reflag

Feature flags and A/B testing for TypeScript

Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.

Fit guide

Great for

  • Teams needing quick A/B testing in Ruby web apps
  • Developers who want full control over experiment logic
  • Projects already using Redis
  • Applications where weighted rollout is important

Not ideal when

  • Apps without Redis or unwilling to add it
  • Small‑traffic sites that can't meet sample‑size thresholds
  • Non‑Ruby or non‑Rack environments
  • Teams requiring an out‑of‑the‑box visual experiment designer

How teams use it

Landing page button color test

Identify which button image drives higher click‑through rates

Signup flow redesign

Measure conversion impact of a new signup page versus the original

Feature flag rollout with weighted exposure

Gradually expose a new feature to 10% of users while tracking adoption

Pricing page variant experiment

Determine the optimal pricing presentation that maximizes purchase intent

Tech snapshot

Ruby92%
HTML4%
CSS3%
JavaScript1%

Tags

rackredisrailssplitab-testingruby

Frequently asked questions

What database does Split use?

Split stores experiment data in Redis; Redis 4.0+ is required.

Can I run Split with older Ruby versions?

Version 4.x needs Ruby ≥ 2.5; earlier releases (3.0, 0.8) support older Ruby versions.

How does Split decide the winning alternative?

It offers a z‑test for simple two‑variant tests and beta‑distribution simulations for multiple variants, with configurable recalculation intervals.

Is it possible to force a specific variant during development?

Yes, you can override alternatives via URL parameters or use the RSpec helper to stub `ab_test`.

Do experiments start automatically?

By default they start on deployment, but setting `start_manually` delays activation until you press Start in the dashboard.

Project at a glance

Active
Stars
2,711
Watchers
2,711
Forks
368
LicenseMIT
Repo age14 years old
Last commit4 days ago
Primary languageRuby

Last synced yesterday