Module: RedisMail

Extended by:
RedisMail
Included in:
RedisMail
Defined in:
lib/redis_mail.rb,
lib/redis_mail/railtie.rb,
lib/redis_mail/version.rb,
lib/redis_mail/deliverer.rb

Defined Under Namespace

Classes: Deliverer, Railtie

Constant Summary collapse

VERSION =
"0.8.1"

Instance Method Summary collapse

Instance Method Details

#clear_allObject



22
23
24
25
26
# File 'lib/redis_mail.rb', line 22

def clear_all
  mailboxes.reduce(false) do |cleared,mailbox|
    clear_mailbox(mailbox) || cleared
  end
end

#clear_mailbox(recipient) ⇒ Object



17
18
19
20
# File 'lib/redis_mail.rb', line 17

def clear_mailbox(recipient)
  redis.del mailbox_key(recipient)
  redis.srem :mailboxes, recipient
end

#deliver(recipient, message) ⇒ Object



50
51
52
53
# File 'lib/redis_mail.rb', line 50

def deliver(recipient, message)
  redis.sadd :mailboxes, recipient
  redis.rpush mailbox_key(recipient), message
end

#deliveriesObject



36
37
38
# File 'lib/redis_mail.rb', line 36

def deliveries
  mailboxes.map{|recipient| deliveries_to(recipient)}.flatten
end

#deliveries_countObject



40
41
42
43
44
# File 'lib/redis_mail.rb', line 40

def deliveries_count
  mailboxes.reduce(0){|sum, recipient|
    sum + redis.llen(mailbox_key(recipient))
  }
end

#deliveries_count_to(recipient) ⇒ Object



46
47
48
# File 'lib/redis_mail.rb', line 46

def deliveries_count_to(recipient)
  redis.llen(mailbox_key(recipient))
end

#deliveries_to(recipient) ⇒ Object



32
33
34
# File 'lib/redis_mail.rb', line 32

def deliveries_to(recipient)
  redis.lrange mailbox_key(recipient), 0, -1
end

#mailboxesObject



28
29
30
# File 'lib/redis_mail.rb', line 28

def mailboxes
  redis.smembers :mailboxes
end

#redisObject



12
13
14
15
# File 'lib/redis_mail.rb', line 12

def redis
  raise "RedisMail.redis must be set to a Redis connection" unless @redis
  @redis
end

#redis=(server) ⇒ Object



8
9
10
# File 'lib/redis_mail.rb', line 8

def redis=(server)
  @redis = Redis::Namespace.new(:redis_mail, redis: server)
end