diff --git a/Gemfile b/Gemfile index 00bc3c754..68690fbd0 100644 --- a/Gemfile +++ b/Gemfile @@ -36,6 +36,7 @@ gem "feedjira", "~> 3.2" # A feed fetching and parsing library gem "field_test", "~> 0.4" # A/B testing gem "flipper", "~> 0.22.1" # Feature flipping / flags for Ruby gem "flipper-active_record", "~> 0.22.1" # Store Flipper flags in ActiveRecord +gem "flipper-active_support_cache_store", "~> 0.22.1" # Cache feature flags for a short time gem "flipper-ui", "~> 0.22.1" gem "fog-aws", "~> 3.12" # 'fog' gem to support Amazon Web Services gem "front_matter_parser", "~> 1.0" # Parse a front matter from syntactically correct strings or files diff --git a/Gemfile.lock b/Gemfile.lock index ae67e2fc5..522beb0d2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -278,6 +278,9 @@ GEM flipper-active_record (0.22.1) activerecord (>= 4.2, < 7) flipper (~> 0.22.1) + flipper-active_support_cache_store (0.22.1) + activesupport (>= 4.2, < 7) + flipper (~> 0.22.1) flipper-ui (0.22.1) erubi (>= 1.0.0, < 2.0.0) flipper (~> 0.22.1) @@ -879,6 +882,7 @@ DEPENDENCIES field_test (~> 0.4) flipper (~> 0.22.1) flipper-active_record (~> 0.22.1) + flipper-active_support_cache_store (~> 0.22.1) flipper-ui (~> 0.22.1) fog-aws (~> 3.12) front_matter_parser (~> 1.0) diff --git a/config/initializers/flipper.rb b/config/initializers/flipper.rb index d4dd55d9a..a50ddf1b1 100644 --- a/config/initializers/flipper.rb +++ b/config/initializers/flipper.rb @@ -1,7 +1,13 @@ Flipper.configure do |config| config.default do - # pick an adapter, this uses memory, any will do - adapter = Flipper::Adapters::ActiveRecord.new + adapter = if (cache_duration = ENV["CACHE_FEATURE_FLAGS_SECONDS"]) + Flipper::Adapters::ActiveSupportCacheStore.new( + Flipper::Adapters::ActiveRecord.new, + ActiveSupport::Cache::MemoryStore.new(expires_in: cache_duration.to_i.seconds), + ) + else + Flipper::Adapters::ActiveRecord.new + end # pass adapter to handy DSL instance Flipper.new(adapter) diff --git a/vendor/cache/flipper-active_support_cache_store-0.22.1.gem b/vendor/cache/flipper-active_support_cache_store-0.22.1.gem new file mode 100644 index 000000000..c5fb7b895 Binary files /dev/null and b/vendor/cache/flipper-active_support_cache_store-0.22.1.gem differ