Class: LcpRuby::ConditionServiceRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/condition_service_registry.rb

Class Method Summary collapse

Class Method Details

.clear!Object



47
48
49
# File 'lib/lcp_ruby/condition_service_registry.rb', line 47

def clear!
  @registry = {}
end

.discover!(base_path) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/lcp_ruby/condition_service_registry.rb', line 28

def discover!(base_path)
  services_path = File.join(base_path, "condition_services")
  return unless File.directory?(services_path)

  Dir[File.join(services_path, "**", "*.rb")].sort.each do |file|
    require file

    relative = file.sub("#{services_path}/", "").sub(/\.rb$/, "")
    class_name = "LcpRuby::HostConditionServices::#{relative.split('/').map(&:camelize).join('::')}"

    begin
      service_class = class_name.constantize
      register(relative, service_class)
    rescue NameError => e
      Rails.logger.warn("[LcpRuby] Could not register condition service #{class_name}: #{e.message}")
    end
  end
end

.lookup(key) ⇒ Object



9
10
11
# File 'lib/lcp_ruby/condition_service_registry.rb', line 9

def lookup(key)
  registry[key.to_s]
end

.register(key, service) ⇒ Object



4
5
6
7
# File 'lib/lcp_ruby/condition_service_registry.rb', line 4

def register(key, service)
  registry[key.to_s] = service
  Services::Registry.register("conditions", key, service) if defined?(Services::Registry)
end

.register_built_ins!Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/lcp_ruby/condition_service_registry.rb', line 17

def register_built_ins!
  require_relative "condition_services/current_user_role"
  register("current_user_role", LcpRuby::ConditionServices::CurrentUserRole)

  require_relative "condition_services/impersonating"
  register("impersonating", LcpRuby::ConditionServices::Impersonating)

  require_relative "condition_services/feature_flag"
  register("feature_flag", LcpRuby::ConditionServices::FeatureFlag)
end

.registered?(key) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/lcp_ruby/condition_service_registry.rb', line 13

def registered?(key)
  registry.key?(key.to_s)
end