Class: EasyTalk::ValidationAdapters::Registry
- Inherits:
-
Object
- Object
- EasyTalk::ValidationAdapters::Registry
- Defined in:
- lib/easy_talk/validation_adapters/registry.rb
Overview
Registry for validation adapters.
The registry allows adapters to be registered with symbolic names and resolved from various input types (symbols, classes, or nil for default).
Class Method Summary collapse
-
.adapters ⇒ Hash{Symbol => Class}
Get the hash of registered adapters.
-
.register(name, adapter_class)
Register an adapter with a symbolic name.
-
.register_default_adapters
Register the default validation adapters.
-
.registered?(name) ⇒ Boolean
Check if an adapter is registered with the given name.
-
.reset!
Reset the registry (useful for testing).
-
.resolve(adapter) ⇒ Class
Resolve an adapter from various input types.
Class Method Details
.adapters ⇒ Hash{Symbol => Class}
Get the hash of registered adapters.
22 23 24 |
# File 'lib/easy_talk/validation_adapters/registry.rb', line 22 def adapters @adapters ||= {} end |
.register(name, adapter_class)
This method returns an undefined value.
Register an adapter with a symbolic name.
32 33 34 35 36 |
# File 'lib/easy_talk/validation_adapters/registry.rb', line 32 def register(name, adapter_class) raise ArgumentError, "Adapter must respond to .build_validations" unless adapter_class.respond_to?(:build_validations) adapters[name.to_sym] = adapter_class end |
.register_default_adapters
This method returns an undefined value.
Register the default validation adapters. This is called during gem initialization and after reset!
80 81 82 83 |
# File 'lib/easy_talk/validation_adapters/registry.rb', line 80 def register_default_adapters register(:active_model, ActiveModelAdapter) register(:none, NoneAdapter) end |
.registered?(name) ⇒ Boolean
Check if an adapter is registered with the given name.
63 64 65 |
# File 'lib/easy_talk/validation_adapters/registry.rb', line 63 def registered?(name) adapters.key?(name.to_sym) end |
.reset!
This method returns an undefined value.
Reset the registry (useful for testing). Re-registers the default adapters after clearing.
71 72 73 74 |
# File 'lib/easy_talk/validation_adapters/registry.rb', line 71 def reset! @adapters = nil register_default_adapters end |
.resolve(adapter) ⇒ Class
Resolve an adapter from various input types.
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/easy_talk/validation_adapters/registry.rb', line 46 def resolve(adapter) case adapter when nil adapters[:active_model] || raise(ArgumentError, "No default adapter registered") when Symbol adapters[adapter] || raise(ArgumentError, "Unknown validation adapter: #{adapter.inspect}") when Class adapter else raise ArgumentError, "Invalid adapter type: #{adapter.class}. Expected Symbol, Class, or nil." end end |