Class: Ffe::FeatureFlag
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Ffe::FeatureFlag
- Defined in:
- app/models/ffe/feature_flag.rb
Class Method Summary collapse
- .disabled?(flag) ⇒ Boolean
-
.enabled?(flag) ⇒ Boolean
the Flag functionality itself.
- .enabled_for?(flag, user: nil) ⇒ Boolean
Instance Method Summary collapse
-
#allowed_milieu? ⇒ Boolean
instance methods.
-
#readable_milieus ⇒ Object
rubocop:disable Metrics/AbcSize.
Class Method Details
.disabled?(flag) ⇒ Boolean
19 20 21 |
# File 'app/models/ffe/feature_flag.rb', line 19 def self.disabled?(flag) !enabled?(flag) end |
.enabled?(flag) ⇒ Boolean
the Flag functionality itself
main methods
13 14 15 16 17 |
# File 'app/models/ffe/feature_flag.rb', line 13 def self.enabled?(flag) feature = find_by(name: flag) feature.enabled? && feature.allowed_milieu? end |
.enabled_for?(flag, user: nil) ⇒ Boolean
23 24 25 26 27 28 29 30 |
# File 'app/models/ffe/feature_flag.rb', line 23 def self.enabled_for?(flag, user: nil) return enabled?(flag) if user.blank? feature = find_by(name: flag) return false unless feature.allowed_milieu? feature.enabled? && feature.user_ids.include?(user.id.to_s) end |
Instance Method Details
#allowed_milieu? ⇒ Boolean
instance methods
34 35 36 37 38 39 40 |
# File 'app/models/ffe/feature_flag.rb', line 34 def allowed_milieu? actual_milieu = ENV.fetch(Ffe.config.env_variable, false) return false unless actual_milieu pos = Ffe.config.milieus[actual_milieu.to_sym] milieu[pos] == '1' end |
#readable_milieus ⇒ Object
rubocop:disable Metrics/AbcSize
42 43 44 45 46 47 48 49 |
# File 'app/models/ffe/feature_flag.rb', line 42 def readable_milieus # rubocop:disable Metrics/AbcSize relevant = milieu.to_s.ljust(Ffe.config.milieus.length, '0').chars.first(Ffe.config.milieus.length) return 'all' if relevant.all? { |m| m == '1' } return 'no' if relevant.all? { |m| m == '0' } inverted = Ffe.config.milieus.invert relevant.each_with_index.filter_map { |m, i| inverted[i] if m == '1' }.join(', ') end |