Module: Panda::CMS::Features
- Defined in:
- lib/panda/cms/features.rb
Overview
Lightweight feature flag registry so open-source core can gate functionality that is only available when panda-cms-pro is installed.
Defined Under Namespace
Classes: Feature, MissingFeatureError
Class Method Summary
collapse
Class Method Details
.enabled?(name) ⇒ Boolean
25
26
27
|
# File 'lib/panda/cms/features.rb', line 25
def enabled?(name)
registry.key?(name.to_sym)
end
|
.enabled_features ⇒ Object
40
41
42
|
# File 'lib/panda/cms/features.rb', line 40
def enabled_features
registry.keys
end
|
.provider_for(name) ⇒ Object
36
37
38
|
# File 'lib/panda/cms/features.rb', line 36
def provider_for(name)
registry[name.to_sym]&.provider
end
|
.register(name, provider:) ⇒ Object
13
14
15
|
# File 'lib/panda/cms/features.rb', line 13
def register(name, provider:)
registry[name.to_sym] = Feature.new(name: name.to_sym, provider: provider)
end
|
.require!(name) ⇒ Object
29
30
31
32
33
34
|
# File 'lib/panda/cms/features.rb', line 29
def require!(name)
return if enabled?(name)
raise MissingFeatureError,
"The #{name} feature is only available with panda-cms-pro."
end
|
.reset! ⇒ Object
21
22
23
|
# File 'lib/panda/cms/features.rb', line 21
def reset!
registry.clear
end
|
.unregister(name) ⇒ Object
17
18
19
|
# File 'lib/panda/cms/features.rb', line 17
def unregister(name)
registry.delete(name.to_sym)
end
|