Class: RailsDrips::MailRegistry

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/rails_drips/mail_registry.rb

Defined Under Namespace

Classes: Definition

Instance Method Summary collapse

Constructor Details

#initializeMailRegistry

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

#clearObject



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

Raises:



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

Returns:

  • (Boolean)


39
40
41
# File 'lib/rails_drips/mail_registry.rb', line 39

def registered?(key)
  @definitions.key?(key.to_s)
end