class Outbox::Messages::Base

Public Class Methods

new(fields = nil, &block) click to toggle source

Make a new message. Every message type can be created using a hash, block, or direct assignment.

message = Email.new(
  to: 'someone@example.com',
  from: 'company@example.com'
)
message = Email.new do
  to 'someone@example.com'
  from 'company@example.com'
end
message = Email.new
message.to = 'someone@example.com'
message.from = 'company@example.com'
# File lib/outbox/messages/base.rb, line 21
def initialize(fields = nil, &block)
  @fields = {}
  if self.class.default_client
    @client = self.class.default_client.dup
  else
    @client = nil
  end

  self.fields = self.class.defaults

  if block_given?
    instance_eval(&block)
  else
    self.fields = fields unless fields.nil?
  end
end

Public Instance Methods

audience=(audience) click to toggle source

Sets the ‘audience’ for this message. All message types must implement this method. By default, this is an alias for a ‘to’ field if present.

# File lib/outbox/messages/base.rb, line 40
def audience=(audience)
  self.to = audience if self.respond_to?(:to=)
end
body=(body) click to toggle source

Sets the ‘body’ for this message. All message types must implement this method.

# File lib/outbox/messages/base.rb, line 46
def body=(body)
  raise NotImplementedError, 'Subclasses must implement a body= method'
end
deliver(audience = nil) click to toggle source

Validates the current message and delivers the message using the defined client.

# File lib/outbox/messages/base.rb, line 52
def deliver(audience = nil)
  self.audience = audience if audience
  validate_fields
  client.deliver(self)
end