Class: Collavre::IntegrationSettings::Registry

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/collavre/integration_settings/registry.rb

Overview

Singleton registry of integration setting key definitions. Engines register their keys at boot via ‘to_prepare`, then the admin UI and Resolver consult this registry.

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



13
14
15
# File 'lib/collavre/integration_settings/registry.rb', line 13

def initialize
  @definitions = {}
end

Instance Method Details

#allArray<KeyDefinition>

Returns all registered definitions (frozen snapshot).

Returns:

  • (Array<KeyDefinition>)

    all registered definitions (frozen snapshot)



44
45
46
# File 'lib/collavre/integration_settings/registry.rb', line 44

def all
  @definitions.values.freeze
end

#by_categoryHash{String => Array<KeyDefinition>}

Returns definitions grouped by category.

Returns:

  • (Hash{String => Array<KeyDefinition>})

    definitions grouped by category



55
56
57
# File 'lib/collavre/integration_settings/registry.rb', line 55

def by_category
  @definitions.values.group_by(&:category)
end

#find(key) ⇒ KeyDefinition?

Parameters:

  • key (Symbol, String)

Returns:



50
51
52
# File 'lib/collavre/integration_settings/registry.rb', line 50

def find(key)
  @definitions[key.to_sym]
end

#register(key, category:, sensitive: true, requires_restart: false, env_var: nil, default: nil, input_type: :string, admin_visible: true) ⇒ KeyDefinition

Register a key definition.

Parameters:

  • key (Symbol, String)

    canonical identifier (e.g. :slack_client_id)

  • category (String)

    grouping label (e.g. “slack”)

  • sensitive (Boolean) (defaults to: true)

    when true, value is masked in admin UI

  • requires_restart (Boolean) (defaults to: false)

    when true, surfaces restart-required badge

  • env_var (String, nil) (defaults to: nil)

    ENV variable name (defaults to key.upcase)

  • default (String, nil) (defaults to: nil)

    static fallback used when DB & ENV blank

  • input_type (Symbol) (defaults to: :string)

    admin UI widget: :string (default) or :textarea

  • admin_visible (Boolean) (defaults to: true)

    when false the key is resolvable but hidden from admin UI

Returns:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/collavre/integration_settings/registry.rb', line 28

def register(key, category:, sensitive: true, requires_restart: false, env_var: nil, default: nil,
             input_type: :string, admin_visible: true)
  key = key.to_sym
  @definitions[key] = KeyDefinition.new(
    key: key,
    category: category,
    sensitive: sensitive,
    requires_restart: requires_restart,
    env_var: env_var || key.to_s.upcase,
    default: default,
    input_type: input_type,
    admin_visible: admin_visible
  )
end