Flipper Cloud

ActiveSupportCacheStore adapter

An ActiveSupportCacheStore adapter for Flipper.


Add this line to your application's Gemfile:

gem 'flipper-active_support_cache_store'

And then execute:

$ bundle

Or install it yourself with:

$ gem install flipper-active_support_cache_store


require 'active_support/cache'
require 'flipper/adapters/active_support_cache_store'

Flipper.configure do |config|
  config.adapter do
      ActiveSupport::Cache::MemoryStore.new, # Or Rails.cache
      expires_in: 5.minutes

Setting expires_in is optional and will set an expiration time on Flipper cache keys. If specified, all flipper keys will use this expires_in over the expires_in passed to your ActiveSupport cache constructor.


Each feature is stored in the underlying cache store.

This is an example using ActiveSupport::Cache::MemoryStore with the Flipper memory adapter.

Each key is namespaced under flipper/v1/feature/

require 'active_support/cache'
require 'flipper/adapters/active_support_cache_store'

memory_adapter = Flipper::Adapters::Memory.new
cache = ActiveSupport::Cache::MemoryStore.new
adapter = Flipper::Adapters::ActiveSupportCacheStore.new(memory_adapter, cache)
flipper = Flipper.new(adapter)

# Register a few groups.
Flipper.register(:admins) { |thing| thing.admin? }
Flipper.register(:early_access) { |thing| thing.early_access? }

# Create a user class that has flipper_id instance method.
User = Struct.new(:flipper_id)

flipper[:stats].enable_group :admins
flipper[:stats].enable_group :early_access
flipper[:stats].enable_actor User.new('25')
flipper[:stats].enable_actor User.new('90')
flipper[:stats].enable_actor User.new('180')
flipper[:stats].enable_percentage_of_time 15
flipper[:stats].enable_percentage_of_actors 45

# reading all feature keys
pp cache.read("flipper/v1/features")
#<Set: {"stats", "search"}>

# reading a single feature
pp cache.read("flipper/v1/feature/stats")
  :groups=>#<Set: {"admins", "early_access"}>,
  :actors=>#<Set: {"25", "90", "180"}>,

# flipper get of feature
pp adapter.get(flipper[:stats])
  :groups=>#<Set: {"admins", "early_access"}>,
  :actors=>#<Set: {"25", "90", "180"}>,
Start flipping features with Flipper Cloud to get support, audit history, finer-grained permissions, multi-environment sync, and all of your projects in one place.

Prefer our open source Cloudless option? You can also choose from several tiers to sponsor Flipper on GitHub.