From a4b53d6ac4d9faec9b57ff3b70c17b05efe11dea Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 30 Mar 2021 12:23:02 +0200 Subject: [PATCH] Initialize flipper with default value - Use the ActiveRecord adapter - Use a middle to cache data through memoization (see https://github.com/jnunemaker/flipper/blob/master/docs/Optimization.md) - Create the group `admins`: only user which are admins - Create `unit_price` feature attached to `admins` group - Add method `flipper_id` on User --- app/models/spree/user.rb | 4 ++++ config/initializers/flipper.rb | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 config/initializers/flipper.rb diff --git a/app/models/spree/user.rb b/app/models/spree/user.rb index ab1ef6ddfc..a2982181e7 100644 --- a/app/models/spree/user.rb +++ b/app/models/spree/user.rb @@ -135,6 +135,10 @@ module Spree spree_orders.incomplete.where(created_by_id: id).order('created_at DESC').first end + def flipper_id + "#{self.class.name};#{id}" + end + protected def password_required? diff --git a/config/initializers/flipper.rb b/config/initializers/flipper.rb new file mode 100644 index 0000000000..f5351b71ab --- /dev/null +++ b/config/initializers/flipper.rb @@ -0,0 +1,16 @@ +require "flipper" +require "flipper/adapters/active_record" + +Flipper.configure do |config| + config.default do + Flipper.new(Flipper::Adapters::ActiveRecord.new) + end +end +Rails.configuration.middleware.use Flipper::Middleware::Memoizer, preload_all: true + +Flipper.register(:admins) { |actor| actor.respond_to?(:admin?) && actor.admin? } + +if !Flipper[:unit_price].exist? + # Unit price default setup, could be overided by admin in the flipper-ui interface + Flipper.enable_group :unit_price, :admins +end