aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Gemfile.lock4
-rw-r--r--app/jobs/action_mailbox/incineration_job.rb (renamed from app/jobs/action_mailbox/inbound_email/incineration_job.rb)2
-rw-r--r--app/models/action_mailbox/inbound_email.rb4
-rw-r--r--app/models/action_mailbox/inbound_email/incineratable.rb23
-rw-r--r--app/models/action_mailbox/inbound_email/incineratable/incineration.rb4
-rw-r--r--app/models/action_mailbox/inbound_email/routable.rb2
-rw-r--r--lib/action_mailbox.rb2
-rw-r--r--lib/action_mailbox/base.rb2
-rw-r--r--lib/action_mailbox/routing.rb10
-rw-r--r--test/unit/inbound_email/incineration_test.rb6
-rw-r--r--test/unit/mailbox/routing_test.rb2
11 files changed, 26 insertions, 35 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index 96ed132ea1..2251704810 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -95,7 +95,7 @@ GEM
loofah (2.2.2)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
- mail (2.7.0)
+ mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (0.3.3)
mimemagic (~> 0.3.2)
@@ -144,4 +144,4 @@ DEPENDENCIES
sqlite3
BUNDLED WITH
- 1.16.5
+ 1.16.6
diff --git a/app/jobs/action_mailbox/inbound_email/incineration_job.rb b/app/jobs/action_mailbox/incineration_job.rb
index d9422a3fa8..e9f0c78e0f 100644
--- a/app/jobs/action_mailbox/inbound_email/incineration_job.rb
+++ b/app/jobs/action_mailbox/incineration_job.rb
@@ -1,4 +1,4 @@
-class ActionMailbox::InboundEmail::IncinerationJob < ApplicationJob
+class ActionMailbox::IncinerationJob < ApplicationJob
queue_as :action_mailbox_incineration
def self.schedule(inbound_email)
diff --git a/app/models/action_mailbox/inbound_email.rb b/app/models/action_mailbox/inbound_email.rb
index f2589d7429..7d1a36b705 100644
--- a/app/models/action_mailbox/inbound_email.rb
+++ b/app/models/action_mailbox/inbound_email.rb
@@ -19,4 +19,8 @@ class ActionMailbox::InboundEmail < ActiveRecord::Base
def source
@source ||= raw_email.download
end
+
+ def processed?
+ delivered? || failed? || bounced?
+ end
end
diff --git a/app/models/action_mailbox/inbound_email/incineratable.rb b/app/models/action_mailbox/inbound_email/incineratable.rb
index 364231a443..198846422c 100644
--- a/app/models/action_mailbox/inbound_email/incineratable.rb
+++ b/app/models/action_mailbox/inbound_email/incineratable.rb
@@ -2,27 +2,14 @@ module ActionMailbox::InboundEmail::Incineratable
extend ActiveSupport::Concern
included do
- before_update :remember_to_incinerate_later
- after_update_commit :incinerate_later, if: :incinerating_later?
+ after_update_commit :incinerate_later, if: -> { status_previously_changed? && processed? }
+ end
+
+ def incinerate_later
+ ActionMailbox::IncinerationJob.schedule self
end
def incinerate
Incineration.new(self).run
end
-
- private
- # TODO: Use enum change tracking once merged into Active Support
- def remember_to_incinerate_later
- if status_changed? && (delivered? || bounced? || failed?)
- @incinerating_later = true
- end
- end
-
- def incinerating_later?
- @incinerating_later ||= false
- end
-
- def incinerate_later
- ActionMailbox::InboundEmail::IncinerationJob.schedule(self)
- end
end
diff --git a/app/models/action_mailbox/inbound_email/incineratable/incineration.rb b/app/models/action_mailbox/inbound_email/incineratable/incineration.rb
index ab9311edfb..801cc0c8b9 100644
--- a/app/models/action_mailbox/inbound_email/incineratable/incineration.rb
+++ b/app/models/action_mailbox/inbound_email/incineratable/incineration.rb
@@ -4,7 +4,7 @@ class ActionMailbox::InboundEmail::Incineratable::Incineration
end
def run
- @inbound_email.destroy if due? && processed?
+ @inbound_email.destroy! if due? && processed?
end
private
@@ -13,6 +13,6 @@ class ActionMailbox::InboundEmail::Incineratable::Incineration
end
def processed?
- @inbound_email.delivered? || @inbound_email.bounced? || @inbound_email.failed?
+ @inbound_email.processed?
end
end
diff --git a/app/models/action_mailbox/inbound_email/routable.rb b/app/models/action_mailbox/inbound_email/routable.rb
index 48b357af45..8f5b0ddd39 100644
--- a/app/models/action_mailbox/inbound_email/routable.rb
+++ b/app/models/action_mailbox/inbound_email/routable.rb
@@ -2,7 +2,7 @@ module ActionMailbox::InboundEmail::Routable
extend ActiveSupport::Concern
included do
- after_create_commit :route_later, if: ->(inbound_email) { inbound_email.pending? }
+ after_create_commit :route_later, if: :pending?
end
def route_later
diff --git a/lib/action_mailbox.rb b/lib/action_mailbox.rb
index 01cc38ec4a..ae37cb84ed 100644
--- a/lib/action_mailbox.rb
+++ b/lib/action_mailbox.rb
@@ -5,8 +5,6 @@ module ActionMailbox
autoload :Base
autoload :Router
- autoload :Callbacks
- autoload :Routing
mattr_accessor :logger
mattr_accessor :incinerate_after, default: 30.days
diff --git a/lib/action_mailbox/base.rb b/lib/action_mailbox/base.rb
index 3b12493662..30ecc4b623 100644
--- a/lib/action_mailbox/base.rb
+++ b/lib/action_mailbox/base.rb
@@ -50,7 +50,7 @@ class ActionMailbox::Base
inbound_email.processing!
yield
inbound_email.delivered! unless inbound_email.bounced?
- rescue => exception
+ rescue
inbound_email.failed!
raise
end
diff --git a/lib/action_mailbox/routing.rb b/lib/action_mailbox/routing.rb
index b40e2774e4..d258b632f9 100644
--- a/lib/action_mailbox/routing.rb
+++ b/lib/action_mailbox/routing.rb
@@ -2,15 +2,17 @@ module ActionMailbox
module Routing
extend ActiveSupport::Concern
- class_methods do
- attr_reader :router
+ included do
+ cattr_accessor :router, default: ActionMailbox::Router.new
+ end
+ class_methods do
def routing(routes)
- (@router ||= ActionMailbox::Router.new).add_routes(routes)
+ router.add_routes(routes)
end
def route(inbound_email)
- @router.route(inbound_email)
+ router.route(inbound_email)
end
end
end
diff --git a/test/unit/inbound_email/incineration_test.rb b/test/unit/inbound_email/incineration_test.rb
index 72378df05a..a3267afac9 100644
--- a/test/unit/inbound_email/incineration_test.rb
+++ b/test/unit/inbound_email/incineration_test.rb
@@ -4,7 +4,7 @@ class ActionMailbox::InboundEmail::IncinerationTest < ActiveSupport::TestCase
test "incinerating 30 days after delivery" do
freeze_time
- assert_enqueued_with job: ActionMailbox::InboundEmail::IncinerationJob, at: 30.days.from_now do
+ assert_enqueued_with job: ActionMailbox::IncinerationJob, at: 30.days.from_now do
create_inbound_email_from_fixture("welcome.eml").delivered!
end
end
@@ -12,7 +12,7 @@ class ActionMailbox::InboundEmail::IncinerationTest < ActiveSupport::TestCase
test "incinerating 30 days after bounce" do
freeze_time
- assert_enqueued_with job: ActionMailbox::InboundEmail::IncinerationJob, at: 30.days.from_now do
+ assert_enqueued_with job: ActionMailbox::IncinerationJob, at: 30.days.from_now do
create_inbound_email_from_fixture("welcome.eml").bounced!
end
end
@@ -20,7 +20,7 @@ class ActionMailbox::InboundEmail::IncinerationTest < ActiveSupport::TestCase
test "incinerating 30 days after failure" do
freeze_time
- assert_enqueued_with job: ActionMailbox::InboundEmail::IncinerationJob, at: 30.days.from_now do
+ assert_enqueued_with job: ActionMailbox::IncinerationJob, at: 30.days.from_now do
create_inbound_email_from_fixture("welcome.eml").failed!
end
end
diff --git a/test/unit/mailbox/routing_test.rb b/test/unit/mailbox/routing_test.rb
index 320dee6aab..f30199b7af 100644
--- a/test/unit/mailbox/routing_test.rb
+++ b/test/unit/mailbox/routing_test.rb
@@ -23,7 +23,7 @@ class ActionMailbox::Base::RoutingTest < ActiveSupport::TestCase
test "delayed routing" do
perform_enqueued_jobs only: ActionMailbox::RoutingJob do
- another_inbound_email = create_inbound_email_from_fixture("welcome.eml", status: :pending)
+ create_inbound_email_from_fixture "welcome.eml", status: :pending
assert_equal "Discussion: Let's debate these attachments", $processed
end
end