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)



39
40
41
# File 'lib/collavre/integration_settings/registry.rb', line 39

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



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

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

#find(key) ⇒ KeyDefinition?

Parameters:

  • key (Symbol, String)

Returns:



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

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

#register(key, category:, sensitive: true, requires_restart: false, env_var: nil, default: nil) ⇒ 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

Returns:



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/collavre/integration_settings/registry.rb', line 26

def register(key, category:, sensitive: true, requires_restart: false, env_var: nil, default: nil)
  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
  )
end