Allow skipping incineration of processed emails
This commit is contained in:
parent
9cc463ed7b
commit
d0037daa37
|
@ -1,3 +1,9 @@
|
|||
* Allow skipping incineration of processed emails.
|
||||
|
||||
This can be done by setting `config.action_mailbox.incinerate` to `false`.
|
||||
|
||||
*Pratik Naik*
|
||||
|
||||
## Rails 6.0.0.beta1 (January 18, 2019) ##
|
||||
|
||||
* Added to Rails.
|
||||
|
|
|
@ -6,6 +6,9 @@ module ActionMailbox
|
|||
#
|
||||
# Since this incineration is set for the future, it'll automatically ignore any <tt>InboundEmail</tt>s
|
||||
# that have already been deleted and discard itself if so.
|
||||
#
|
||||
# You can disable incinerating processed emails by setting +config.action_mailbox.incinerate+ or
|
||||
# +ActionMailbox.incinerate+ to +false+.
|
||||
class IncinerationJob < ActiveJob::Base
|
||||
queue_as { ActionMailbox.queues[:incineration] }
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ module ActionMailbox::InboundEmail::Incineratable
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
after_update_commit :incinerate_later, if: -> { status_previously_changed? && processed? }
|
||||
after_update_commit :incinerate_later, if: -> { ActionMailbox.incinerate && status_previously_changed? && processed? }
|
||||
end
|
||||
|
||||
def incinerate_later
|
||||
|
|
|
@ -11,6 +11,7 @@ module ActionMailbox
|
|||
|
||||
mattr_accessor :ingress
|
||||
mattr_accessor :logger
|
||||
mattr_accessor :incinerate, default: true
|
||||
mattr_accessor :incinerate_after, default: 30.days
|
||||
mattr_accessor :queues, default: {}
|
||||
end
|
||||
|
|
|
@ -14,6 +14,7 @@ module ActionMailbox
|
|||
config.eager_load_namespaces << ActionMailbox
|
||||
|
||||
config.action_mailbox = ActiveSupport::OrderedOptions.new
|
||||
config.action_mailbox.incinerate = true
|
||||
config.action_mailbox.incinerate_after = 30.days
|
||||
|
||||
config.action_mailbox.queues = ActiveSupport::InheritableOptions.new \
|
||||
|
@ -22,6 +23,7 @@ module ActionMailbox
|
|||
initializer "action_mailbox.config" do
|
||||
config.after_initialize do |app|
|
||||
ActionMailbox.logger = app.config.action_mailbox.logger || Rails.logger
|
||||
ActionMailbox.incinerate = app.config.action_mailbox.incinerate.nil? ? true : app.config.action_mailbox.incinerate
|
||||
ActionMailbox.incinerate_after = app.config.action_mailbox.incinerate_after || 30.days
|
||||
ActionMailbox.queues = app.config.action_mailbox.queues || {}
|
||||
end
|
||||
|
|
|
@ -44,4 +44,14 @@ class ActionMailbox::InboundEmail::IncinerationTest < ActiveSupport::TestCase
|
|||
perform_enqueued_jobs only: ActionMailbox::IncinerationJob
|
||||
end
|
||||
end
|
||||
|
||||
test "skipping incineration" do
|
||||
original, ActionMailbox.incinerate = ActionMailbox.incinerate, false
|
||||
|
||||
assert_no_enqueued_jobs only: ActionMailbox::IncinerationJob do
|
||||
create_inbound_email_from_fixture("welcome.eml").delivered!
|
||||
end
|
||||
ensure
|
||||
ActionMailbox.incinerate = original
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue