Module: MonkeyMailer

Extended by:
Fallen
Defined in:
lib/monkey-mailer.rb,
lib/monkey-mailer/email.rb,
lib/monkey-mailer/config.rb,
lib/monkey-mailer/loader.rb,
lib/monkey-mailer/adapter.rb,
lib/monkey-mailer/version.rb,
lib/monkey-mailer/adapters/smtp.rb,
lib/monkey-mailer/adapters/dummy.rb,
lib/monkey-mailer/adapters/mandrilapi.rb

Defined Under Namespace

Modules: Adapters, Loaders Classes: Configuration, DeliverError, Email

Constant Summary collapse

VERSION =
"0.1.0"
@@normal_sleep =
0
@@low_sleep =
0

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.adapterObject



7
8
9
# File 'lib/monkey-mailer/adapter.rb', line 7

def self.adapter
  @@adapter ||= register_adapter
end

.configurationObject



3
4
5
# File 'lib/monkey-mailer/config.rb', line 3

def self.configuration
  @@configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



7
8
9
# File 'lib/monkey-mailer/config.rb', line 7

def self.configure
  yield configuration
end

.extended(base) ⇒ Object



12
13
14
# File 'lib/monkey-mailer.rb', line 12

def self.extended(base)
  base.extend(Fallen)
end

.find_and_deliverObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/monkey-mailer.rb', line 19

def self.find_and_deliver
  emails = []

  #Urgent emails
  emails.concat loader.find_emails(:urgent, MonkeyMailer.configuration.urgent_quota)

  if(@@normal_sleep == configuration.normal_sleep)
    emails.concat loader.find_emails(:normal, MonkeyMailer.configuration.normal_quota)
    @@normal_sleep = 0
  else
    @@normal_sleep += 1
  end

  if(@@low_sleep == configuration.low_sleep)
    emails.concat loader.find_emails(:low, MonkeyMailer.configuration.low_quota)
    @@low_sleep = 0
  else
    @@low_sleep += 1
  end

  send_emails(emails)
end

.loaderObject



5
6
7
# File 'lib/monkey-mailer/loader.rb', line 5

def self.loader
  @@loader ||= register_loader
end

.reset_adapterObject



11
12
13
# File 'lib/monkey-mailer/adapter.rb', line 11

def self.reset_adapter
  @@adapter = nil
end

.reset_loaderObject



9
10
11
# File 'lib/monkey-mailer/loader.rb', line 9

def self.reset_loader
  @@loader = nil
end

.send_emails(emails) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/monkey-mailer/adapter.rb', line 15

def self.send_emails(emails)
  emails.each do |email|
    begin
      adapter.send_email(email)
      loader.delete_email(email)
    rescue DeliverError => e
      puts e.message
      puts e.backtrace
    end
  end
end

Instance Method Details

#runObject



42
43
44
45
46
47
# File 'lib/monkey-mailer.rb', line 42

def run
  while running?
    MonkeyMailer.find_and_deliver
    sleep MonkeyMailer.configuration.sleep
  end
end