Module: Padrino::Mailer::Helpers::ClassMethods

Defined in:
padrino-mailer/lib/padrino-mailer/helpers.rb

Overview

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

Instance Method Summary collapse

Instance Method Details

#deliver(mailer_name, message_name, *attributes) ⇒ Object

Delivers a mailer message email with the given attributes.

Examples:

deliver(:sample, :birthday, "Joey", 21)
deliver(:example, :message, "John")

Parameters:

  • mailer_name (Symbol)

    The name of the mailer.

  • message_name (Symbol)

    The name of the message to deliver.

  • attributes

    The parameters to pass to the mailer.



108
109
110
111
112
113
114
# File 'padrino-mailer/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) ⇒ Object

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

Examples:

MyApp.email(:to => '[email protected]', :from => '[email protected]', :subject => 'Welcome!', :body => 'Welcome Here!')

# or if you prefer blocks

MyApp.email do
  to @user.email
  from "[email protected]"
  subject "Welcome to Awesomeness!"
  body 'path/to/my/template', :locals => { :a => a, :b => b }
end

Parameters:

  • mail_attributes (Hash) (defaults to: {})

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

  • block (Proc)

    The block mail attributes for this message.



136
137
138
139
140
141
142
143
# File 'padrino-mailer/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) ⇒ Object



56
57
58
59
# File 'padrino-mailer/lib/padrino-mailer/helpers.rb', line 56

def inherited(subclass)
  @_registered_mailers ||= {}
  super(subclass)
end

#mailer(name, &block) ⇒ Object Also known as: mailers

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

Examples:

mailer :sample do
  email :birthday do |name, age|
    subject 'Happy Birthday!'
    to      '[email protected]'
    from    '[email protected]'
    locals  :name => name, :age => age
    render  'sample/birthday'
  end
end

Parameters:

  • name (Symbol)

    The name of the mailer to initialize.



86
87
88
89
90
91
# File 'padrino-mailer/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

#registered_mailersObject

Returns all registered mailers for this application.



64
65
66
# File 'padrino-mailer/lib/padrino-mailer/helpers.rb', line 64

def registered_mailers
  @_registered_mailers ||= {}
end