Skip to content

SYSTEM

Flipper (Ruby gem)

Flipper is a Ruby feature-flag library by John Nunemaker (jnunemaker/flipper). Widely used in Rails-based production applications, including PlanetScale's Rails backend. Flipper.enabled?(name) is the evaluation call; Flipper.enable(name) / Flipper.disable(name) are the toggle calls — typically run from a Rails console (or admin UI) to flip production behaviour without a deploy.

Architecture

Pluggable-adapter design:

  • Evaluation API: Flipper.enabled?(key [, actor]) returns boolean. Supports per-actor targeting, percentage rollouts, group membership.
  • Storage adapter: ActiveRecord / Redis / Memory / API — chosen at configuration time. Multi-dyno deployments usually use a shared DB or Redis adapter so toggles propagate to all processes within seconds.
  • UI: optional Rails engine (flipper-ui) for dashboard-style flag management.

As a deploy-less operational lever

Because the evaluation is a DB/Redis lookup and the toggle is a single row update, Flipper operates as a ** deploy-less operational lever** — an operator flipping a flag via Rails console sees the new state reflected on the next request in every dyno (subject to whatever cache the adapter uses).

Seen in

  • canonical wiki introduction. PlanetScale uses Flipper to gate a Sidekiq client middleware that short-circuits async-job enqueue when disable_<classname> flags are set. Canonical example of using a general feature- flag system as the config-channel for a job-level killswitch — no bespoke config system or deploy pipeline required.
  • canonical scheduler-gating extension. The same Flipper- gated middleware is used in the self-healing architecture to disable scheduler jobs during an incident: "has come in useful during an incident where we've wanted control over a specific job type." Scheduler jobs are first-class Sidekiq workers, so the same killswitch substrate gates both work jobs and their scheduler jobs.
Last updated · 542 distilled / 1,571 read