Class: Pageflow::Features
- Inherits:
-
Object
- Object
- Pageflow::Features
- Includes:
- Enumerable
- Defined in:
- lib/pageflow/features.rb
Overview
A registry of [Feature} objects.
Instance Method Summary collapse
- #each ⇒ Object
- #enable(names, config) ⇒ Object private
- #enable_all(config) ⇒ Object private
-
#enable_by_default(name) ⇒ Object
Enable a feature by default for all accounts.
-
#enabled?(name) ⇒ Boolean
Check if a feature has been enabled.
- #enabled_by_default?(name) ⇒ Boolean private
-
#initialize ⇒ Features
constructor
private
A new instance of Features.
- #lint! ⇒ Object private
-
#register(feature) ⇒ Object
Register a feature that can be enabled for accounts of entries.
Constructor Details
#initialize ⇒ Features
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Features.
9 10 11 12 13 |
# File 'lib/pageflow/features.rb', line 9 def initialize @features = {} @enabled_features = [] @default_features = [] end |
Instance Method Details
#each ⇒ Object
86 87 88 |
# File 'lib/pageflow/features.rb', line 86 def each(&) @features.values.each(&) end |
#enable(names, config) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
62 63 64 65 66 67 68 69 70 |
# File 'lib/pageflow/features.rb', line 62 def enable(names, config) @enabled_features = names names.each do |name| raise(ArgumentError, "Cannot enable unknown feature #{name}.") unless @features.key?(name) @features[name].enable(config) end end |
#enable_all(config) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
73 74 75 |
# File 'lib/pageflow/features.rb', line 73 def enable_all(config) enable(@features.keys, config) end |
#enable_by_default(name) ⇒ Object
Enable a feature by default for all accounts. The feature can still be disabled via the web interface.
52 53 54 |
# File 'lib/pageflow/features.rb', line 52 def enable_by_default(name) @default_features << name end |
#enabled?(name) ⇒ Boolean
Check if a feature has been enabled.
44 45 46 |
# File 'lib/pageflow/features.rb', line 44 def enabled?(name) @enabled_features.include?(name) end |
#enabled_by_default?(name) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
57 58 59 |
# File 'lib/pageflow/features.rb', line 57 def enabled_by_default?(name) @default_features.include?(name) end |
#lint! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
78 79 80 81 82 83 84 |
# File 'lib/pageflow/features.rb', line 78 def lint! @default_features.each do |name| unless @features.key?(name) raise(ArgumentError, "Cannot enable unknown feature #{name} by default.") end end end |
#register(feature) ⇒ Object #register(feature) {|config| ... } ⇒ Object #register(feature) ⇒ Object
Register a feature that can be enabled for accounts of entries. If the first parameter is a string, a block can be passed to provide the enable method. If only a string is passed, enabling the feature is no-op.
30 31 32 33 34 35 36 37 38 |
# File 'lib/pageflow/features.rb', line 30 def register(feature, &) return register(Feature.new(feature, &)) if feature.is_a?(String) if @features.key?(feature.name) raise(ArgumentError, "Feature #{feature.name} is already registered.") end @features[feature.name] = feature end |