Class: GravityMailbox::RailsCacheDeliveryMethod
- Inherits:
-
Object
- Object
- GravityMailbox::RailsCacheDeliveryMethod
- Defined in:
- lib/gravity_mailbox/rails_cache_delivery_method.rb
Constant Summary collapse
- KEY_PREFIX =
'gravity_mailbox/'- MAILS_LIST_KEY =
"#{KEY_PREFIX}list"
Instance Attribute Summary collapse
-
#settings ⇒ Object
Returns the value of attribute settings.
Class Method Summary collapse
Instance Method Summary collapse
- #deliver!(mail) ⇒ Object
-
#initialize(settings) ⇒ RailsCacheDeliveryMethod
constructor
A new instance of RailsCacheDeliveryMethod.
Constructor Details
#initialize(settings) ⇒ RailsCacheDeliveryMethod
Returns a new instance of RailsCacheDeliveryMethod.
12 13 14 |
# File 'lib/gravity_mailbox/rails_cache_delivery_method.rb', line 12 def initialize(settings) @settings = settings end |
Instance Attribute Details
#settings ⇒ Object
Returns the value of attribute settings.
10 11 12 |
# File 'lib/gravity_mailbox/rails_cache_delivery_method.rb', line 10 def settings @settings end |
Class Method Details
.delete(id) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/gravity_mailbox/rails_cache_delivery_method.rb', line 39 def self.delete(id) Rails.cache.delete("#{KEY_PREFIX}#{id}") actual_list = mail_keys actual_list.delete("#{KEY_PREFIX}#{id}") Rails.cache.write(MAILS_LIST_KEY, actual_list) end |
.delete_all ⇒ Object
46 47 48 |
# File 'lib/gravity_mailbox/rails_cache_delivery_method.rb', line 46 def self.delete_all Rails.cache.delete_matched("#{KEY_PREFIX}*") end |
.mail(id) ⇒ Object
35 36 37 |
# File 'lib/gravity_mailbox/rails_cache_delivery_method.rb', line 35 def self.mail(id) Mail.new(Rails.cache.read("#{KEY_PREFIX}#{id}")) end |
.mail_keys ⇒ Object
50 51 52 |
# File 'lib/gravity_mailbox/rails_cache_delivery_method.rb', line 50 def self.mail_keys Rails.cache.read(MAILS_LIST_KEY) || [] end |
.mails ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/gravity_mailbox/rails_cache_delivery_method.rb', line 27 def self.mails return [] if mail_keys.empty? Rails.cache.read_multi(*mail_keys).values.map do |mail| Mail.new(mail) end.sort_by(&:date).reverse end |
Instance Method Details
#deliver!(mail) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/gravity_mailbox/rails_cache_delivery_method.rb', line 16 def deliver!(mail) # https://github.com/mikel/mail/blob/d1d65b370b109b98e673a934e8b70a0c1f58cc59/lib/mail/network/delivery_methods/test_mailer.rb#L39 # Create the envelope to validate it Mail::SmtpEnvelope.new(mail) key = "#{KEY_PREFIX}#{mail.message_id}" Rails.cache.write(key, mail.encoded, expires_in: 1.week) # TODO: setting for expiration actual_list = self.class.mail_keys Rails.cache.write(MAILS_LIST_KEY, actual_list << key) end |