module Padrino::Mailer::Helpers::ClassMethods

Class methods responsible for registering mailers, configuring settings and delivering messages.

Public Instance Methods

deliver(mailer_name, message_name, *attributes) click to toggle source

Delivers a mailer message email with the given attributes.

@param [Symbol] mailer_name

The name of the mailer.

@param [Symbol] message_name

The name of the message to deliver.

@param attributes

The parameters to pass to the mailer.

@example

deliver(:sample, :birthday, "Joey", 21)
deliver(:example, :message, "John")
# File lib/padrino-mailer/helpers.rb, line 108
def deliver(mailer_name, message_name, *attributes)
  mailer = registered_mailers[mailer_name] or fail "mailer '#{mailer_name}' is not registered"
  message = mailer.messages[message_name] or fail "mailer '#{mailer_name}' has no message '#{message_name}'"
  message = message.call(*attributes)
  message.delivery_method(*delivery_settings)
  message.deliver
end
email(mail_attributes={}, &block) click to toggle source

Delivers an email with the given mail attributes with specified and default settings.

@param [Hash] mail_attributes

The attributes for this message (to, from, subject, cc, bcc, body, etc.).

@param [Proc] block

The block mail attributes for this message.

@example

MyApp.email(:to => 'to@ma.il', :from => 'from@ma.il', :subject => 'Welcome!', :body => 'Welcome Here!')

# or if you prefer blocks

MyApp.email do
  to @user.email
  from "awesomeness@example.com"
  subject "Welcome to Awesomeness!"
  body 'path/to/my/template', :locals => { :a => a, :b => b }
end
# File lib/padrino-mailer/helpers.rb, line 136
def email(mail_attributes={}, &block)
  message = _padrino_mailer::Message.new(self)
  message.delivery_method(*delivery_settings)
  message.instance_eval(&block) if block_given?
  mail_attributes = mailer_defaults.merge(mail_attributes) if respond_to?(:mailer_defaults)
  mail_attributes.each_pair { |k, v| message.method(k).call(v) }
  message.deliver
end
inherited(subclass) click to toggle source
Calls superclass method
# File lib/padrino-mailer/helpers.rb, line 56
def inherited(subclass)
  @_registered_mailers ||= {}
  super(subclass)
end
mailer(name, &block) click to toggle source

Defines a mailer object allowing the definition of various email messages that can be delivered.

@param [Symbol] name

The name of the mailer to initialize.

@example

mailer :sample do
  email :birthday do |name, age|
    subject 'Happy Birthday!'
    to      'john@fake.com'
    from    'noreply@birthday.com'
    locals  :name => name, :age => age
    render  'sample/birthday'
  end
end
# File lib/padrino-mailer/helpers.rb, line 86
def mailer(name, &block)
  mailer                   = Padrino::Mailer::Base.new(self, name, &block)
  mailer.delivery_settings = delivery_settings
  registered_mailers[name] = mailer
  mailer
end
Also aliased as: mailers
mailers(name, &block)
Alias for: mailer
registered_mailers() click to toggle source

Returns all registered mailers for this application.

# File lib/padrino-mailer/helpers.rb, line 64
def registered_mailers
  @_registered_mailers ||= {}
end

Private Instance Methods

delivery_settings() click to toggle source

Returns the parsed delivery method options.

# File lib/padrino-mailer/helpers.rb, line 149
def delivery_settings
  @_delivery_setting ||= begin
    if Gem.win_platform? && !respond_to?(:delivery_method)
      raise "To use mailers on Windows you must set a :delivery_method, see http://padrinorb.com/guides/features/padrino-mailer/#configuration"
    end

    return [:sendmail, { :location => `which sendmail`.chomp }] unless respond_to?(:delivery_method)
    return [delivery_method.keys[0], delivery_method.values[0]] if delivery_method.is_a?(Hash)
    return [delivery_method, {}] if delivery_method.is_a?(Symbol)
    [nil, {}]
  end
end