Module: Aerogel::Mailer

Included in:
Aerogel
Defined in:
lib/aerogel/mailer/core.rb,
lib/aerogel/mailer/version.rb,
lib/aerogel/mailer/definition.rb

Defined Under Namespace

Classes: Definition

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configureObject



5
6
7
8
9
10
11
# File 'lib/aerogel/mailer/core.rb', line 5

def self.configure
  aerogel_delivery_method = Aerogel.config.mailer.delivery_method
  aerogel_delivery_options = Aerogel.config.mailer.delivery_options.raw || {}
  Mail.defaults do
    delivery_method aerogel_delivery_method, aerogel_delivery_options
  end
end

.mailersObject



18
19
20
# File 'lib/aerogel/mailer/core.rb', line 18

def self.mailers
  @mailers || {}
end

.register_mailer(mailer) ⇒ Object



13
14
15
16
# File 'lib/aerogel/mailer/core.rb', line 13

def self.register_mailer( mailer )
  @mailers ||= {}
  @mailers[mailer.name] = mailer
end

Instance Method Details

#email(name, *args) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/aerogel/mailer/core.rb', line 28

def email( name, *args )
  unless Aerogel::Mailer.mailers[name]
    raise ArgumentError.new "Mailer '#{name}' is not defined"
  end
  params = Aerogel::Mailer.mailers[name].eval( *args )
  puts "** sending mail: #{params}"
  begin
    Mail.deliver do
      from params[:from]
      to params[:to]
      subject params[:subject]
      body params[:body]
    end
  rescue => e
    raise "Mailer '#{name}' failed to deliver email: #{e}"
  end
  # params,
end

#mailer(name, &block) ⇒ Object

Registers new mailer



24
25
26
# File 'lib/aerogel/mailer/core.rb', line 24

def mailer( name, &block )
  Definition.new name, block
end