Class: RailsDrips::MailRegistry
- Inherits:
-
Object
- Object
- RailsDrips::MailRegistry
- Includes:
- Enumerable
- Defined in:
- lib/rails_drips/mail_registry.rb
Defined Under Namespace
Classes: Definition
Instance Method Summary collapse
- #clear ⇒ Object
- #each(&block) ⇒ Object
- #fetch(key) ⇒ Object
-
#initialize ⇒ MailRegistry
constructor
A new instance of MailRegistry.
- #register(key, label:, callable: nil, &block) ⇒ Object
- #registered?(key) ⇒ Boolean
Constructor Details
#initialize ⇒ MailRegistry
Returns a new instance of MailRegistry.
13 14 15 |
# File 'lib/rails_drips/mail_registry.rb', line 13 def initialize @definitions = {} end |
Instance Method Details
#clear ⇒ Object
49 50 51 52 |
# File 'lib/rails_drips/mail_registry.rb', line 49 def clear @definitions.clear self end |
#each(&block) ⇒ Object
43 44 45 46 47 |
# File 'lib/rails_drips/mail_registry.rb', line 43 def each(&block) return enum_for(:each) unless block @definitions.values.each(&block) end |
#fetch(key) ⇒ Object
32 33 34 35 36 37 |
# File 'lib/rails_drips/mail_registry.rb', line 32 def fetch(key) normalized_key = normalize_key(key) @definitions.fetch(normalized_key) do raise MailerNotRegistered, "No mailer is registered for #{normalized_key.inspect}" end end |
#register(key, label:, callable: nil, &block) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/rails_drips/mail_registry.rb', line 17 def register(key, label:, callable: nil, &block) normalized_key = normalize_key(key) delivery_callable = callable || block raise ConfigurationError, "A mailer callable is required for #{normalized_key.inspect}" unless delivery_callable.respond_to?(:call) raise ConfigurationError, "A mailer label is required for #{normalized_key.inspect}" if label.to_s.strip.empty? raise DuplicateMailerKey, "Mailer key #{normalized_key.inspect} is already registered" if registered?(normalized_key) @definitions[normalized_key] = Definition.new( key: normalized_key, label: label.to_s, callable: delivery_callable ) end |
#registered?(key) ⇒ Boolean
39 40 41 |
# File 'lib/rails_drips/mail_registry.rb', line 39 def registered?(key) @definitions.key?(key.to_s) end |