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

Returns:

  • (Boolean)


25
26
27
# File 'lib/panda/cms/features.rb', line 25

def enabled?(name)
  registry.key?(name.to_sym)
end

.enabled_featuresObject



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