Sha256: 70b4f3f98266b03db80341406990f4145a5888137702a0138e8b6fb65a1c7336

Contents?: true

Size: 1.06 KB

Versions: 5

Compression:

Stored size: 1.06 KB

Contents

module Outbox
  module Clients
    class Base
      attr_reader :settings

      # Sets default settings for the client.
      #
      #   MailClient.defaults delivery_method: :sendmail
      #   client = MailClient.new
      #   client.settings[:delivery_method] #=> :sendmail
      def self.defaults(defaults = nil)
        @defaults ||= {}

        if defaults.nil?
          @defaults
        else
          @defaults.merge!(defaults)
        end
      end

      # Creates a new client instance. Settings can be configured per
      # instance by passing in a hash.
      #
      #    client = MailClient.new delivery_method: :sendmail
      #    client.settings[:delivery_method] #=> :sendmail
      def initialize(settings = nil)
        @settings = self.class.defaults.dup
        @settings.merge! settings if settings
      end

      # Delivers the given message.
      #
      # Subclasses must provide an implementation of this method.
      def deliver(message)
        raise NotImplementedError, 'Subclasses must implement a deliver method'
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
outbox-0.2.1 lib/outbox/clients/base.rb
outbox-0.2.0 lib/outbox/clients/base.rb
outbox-0.1.2 lib/outbox/clients/base.rb
outbox-0.1.1 lib/outbox/clients/base.rb
outbox-0.1.0 lib/outbox/clients/base.rb