Transporter

Deliver packages in multiple ways simultaneously (email, jabber, campfire, irc, etc.)

API

require "transporter"

module Transporter
  class Email < Service
    validate_config do |config|
      config.has_keys      :from, :to, :host, :user, :password, :port, :auth
      config.key_is_one_of :auth, %w(plain auth some other)
      [:to, :from].each do |key|
        config.key_matches key,   /--some complicated email regexp--/
      end
    end

    def deliver(message)
      # Send your email
      #
      # In this method you have available `message.short` (usable for short
      # messages such as twitter, or email subjects) and `message.full`
      # usable for longer chunks of text, as an email body.
      #
      # And you have access to `config`, where all your pre-validated config
      # values live (including default values set on the class, this hash is
      # a merged representations of te two.
    end
  end

  register :email, Email
end

How to use

You probably want one of the child projects of this one, where the different implementations provide you with specific implementations. However, the way to use this is as follows:

Transporter.deliver(
  :message => {
    :short => "cuack!",
    :full => "double cuack" 
  },
  :using => {
    :email => {
      :to => "...", :from => "...", ...
    },
    :jabber => {
      :to => "...", :from => "...", ...
    }
  }

Where each key of the ‘:using` hash depends on what implementations you loaded. (`Transporter::Email`, `Transporter::Jabber`, etc). Refer to their specific documentations for the full list of configuration values in each.

The ‘:short` message is used in messages like twitter, IM, or as an email subject. The `:full` message is used

List of implementations

  • Example