aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailbox
diff options
context:
space:
mode:
authorPratik <pratiknaik@gmail.com>2019-02-06 18:28:49 -0600
committerGeorge Claghorn <george.claghorn@gmail.com>2019-02-06 19:28:49 -0500
commitd0037daa3738ac754781ce5e55778a2cf9d3d2f7 (patch)
tree8d8a6c476baf7f85373c182bdbc8dc75835521c1 /actionmailbox
parent9cc463ed7b7be098602b72a98f72220ea6466ba2 (diff)
downloadrails-d0037daa3738ac754781ce5e55778a2cf9d3d2f7.tar.gz
rails-d0037daa3738ac754781ce5e55778a2cf9d3d2f7.tar.bz2
rails-d0037daa3738ac754781ce5e55778a2cf9d3d2f7.zip
Allow skipping incineration of processed emails
Diffstat (limited to 'actionmailbox')
-rw-r--r--actionmailbox/CHANGELOG.md6
-rw-r--r--actionmailbox/app/jobs/action_mailbox/incineration_job.rb3
-rw-r--r--actionmailbox/app/models/action_mailbox/inbound_email/incineratable.rb2
-rw-r--r--actionmailbox/lib/action_mailbox.rb1
-rw-r--r--actionmailbox/lib/action_mailbox/engine.rb2
-rw-r--r--actionmailbox/test/unit/inbound_email/incineration_test.rb10
6 files changed, 23 insertions, 1 deletions
diff --git a/actionmailbox/CHANGELOG.md b/actionmailbox/CHANGELOG.md
index d92367dc17..3e92283c12 100644
--- a/actionmailbox/CHANGELOG.md
+++ b/actionmailbox/CHANGELOG.md
@@ -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.
diff --git a/actionmailbox/app/jobs/action_mailbox/incineration_job.rb b/actionmailbox/app/jobs/action_mailbox/incineration_job.rb
index 1579a3c7c8..351bd67c69 100644
--- a/actionmailbox/app/jobs/action_mailbox/incineration_job.rb
+++ b/actionmailbox/app/jobs/action_mailbox/incineration_job.rb
@@ -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] }
diff --git a/actionmailbox/app/models/action_mailbox/inbound_email/incineratable.rb b/actionmailbox/app/models/action_mailbox/inbound_email/incineratable.rb
index 697331ede4..e7c8782f33 100644
--- a/actionmailbox/app/models/action_mailbox/inbound_email/incineratable.rb
+++ b/actionmailbox/app/models/action_mailbox/inbound_email/incineratable.rb
@@ -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
diff --git a/actionmailbox/lib/action_mailbox.rb b/actionmailbox/lib/action_mailbox.rb
index b4ff25a9ab..772dbd6529 100644
--- a/actionmailbox/lib/action_mailbox.rb
+++ b/actionmailbox/lib/action_mailbox.rb
@@ -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
diff --git a/actionmailbox/lib/action_mailbox/engine.rb b/actionmailbox/lib/action_mailbox/engine.rb
index d5a07a7dce..27334c037e 100644
--- a/actionmailbox/lib/action_mailbox/engine.rb
+++ b/actionmailbox/lib/action_mailbox/engine.rb
@@ -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
diff --git a/actionmailbox/test/unit/inbound_email/incineration_test.rb b/actionmailbox/test/unit/inbound_email/incineration_test.rb
index 21c01a9cea..54488349fd 100644
--- a/actionmailbox/test/unit/inbound_email/incineration_test.rb
+++ b/actionmailbox/test/unit/inbound_email/incineration_test.rb
@@ -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