module Outbox::MessageClients::ClassMethods

Public Instance Methods

default_client(client = nil, settings = nil) click to toggle source

Returns the default client for the message type.

Email.default_client #=> #<Outbox::Clients::Mail>

Also allows you to set the default client using an alias, with optoins.

Email.default_client :test, option: 'foo'
Email.default_client #=> #<Outbox::Clients::TestClient>
# File lib/outbox/message_clients.rb, line 16
def default_client(client = nil, settings = nil)
  @default_client = get_client(client, settings) if client
  @default_client
end
default_client=(client) click to toggle source

Sets the default client.

# File lib/outbox/message_clients.rb, line 22
def default_client=(client)
  @default_client = get_client(client)
end
default_client_settings(settings = nil) click to toggle source

Configure the default client.

# File lib/outbox/message_clients.rb, line 27
def default_client_settings(settings = nil)
  if default_client.nil?
    raise ArgumentError, 'default_client must be set before setting default_client_settings'
  end

  default_client.settings.merge!(settings) if settings
  default_client.settings
end
Also aliased as: default_client_settings=
default_client_settings=(settings = nil)
register_client_alias(name, client) click to toggle source

Registers a client class with an alias.

Email.register_client_alias :mandrill, MandrillClient
Email.default_client :mandrill, mandrill_option: 'foo'
# File lib/outbox/message_clients.rb, line 41
def register_client_alias(name, client)
  registered_client_aliases[name.to_sym] = client
end
registered_client_aliases() click to toggle source

Returns a hash of client aliases, where the key is the alias and the value is client class.

# File lib/outbox/message_clients.rb, line 47
def registered_client_aliases
  @registered_client_aliases ||= { test: Outbox::Clients::TestClient }
end

Protected Instance Methods

get_client(client, options = nil) click to toggle source
# File lib/outbox/message_clients.rb, line 53
def get_client(client, options = nil)
  case client
  when Symbol, String
    client = registered_client_aliases[client.to_sym]
  end

  if client.instance_of?(Class)
    client.new(options)
  else
    client
  end
end