aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2018-09-28 12:19:43 -0700
committerDavid Heinemeier Hansson <david@loudthinking.com>2018-09-28 12:19:43 -0700
commit8a0a1034955544ee2e4c1f85317c0db84f3aa55b (patch)
tree1e00acdce252b2ce505ff2e8f9f5acd4ba19bbeb
parent5ad0813322820a6c42d7b3074531ac40108bfb69 (diff)
downloadrails-8a0a1034955544ee2e4c1f85317c0db84f3aa55b.tar.gz
rails-8a0a1034955544ee2e4c1f85317c0db84f3aa55b.tar.bz2
rails-8a0a1034955544ee2e4c1f85317c0db84f3aa55b.zip
ActionMailroom -> ActionMailbox
We didn't end up using the mailroom metaphor directly, so let's stick with a more conventional naming strategy.
-rw-r--r--Gemfile.lock4
-rw-r--r--actionmailbox.gemspec (renamed from actionmailroom.gemspec)8
-rw-r--r--app/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/controllers/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/controllers/action_mailbox/inbound_emails_controller.rb (renamed from app/controllers/action_mailroom/inbound_emails_controller.rb)4
-rw-r--r--app/controllers/rails/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/controllers/rails/conductor/action_mailbox/inbound_emails_controller.rb (renamed from app/controllers/rails/conductor/action_mailroom/inbound_emails_controller.rb)8
-rw-r--r--app/controllers/rails/conductor/action_mailbox/reroutes_controller.rb (renamed from app/controllers/rails/conductor/action_mailroom/reroutes_controller.rb)4
-rw-r--r--app/jobs/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/jobs/action_mailbox/inbound_email/incineration_job.rb11
-rw-r--r--app/jobs/action_mailbox/routing_job.rb7
-rw-r--r--app/jobs/action_mailroom/inbound_email/incineration_job.rb11
-rw-r--r--app/jobs/action_mailroom/routing_job.rb7
-rw-r--r--app/models/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/models/action_mailbox/inbound_email.rb (renamed from app/models/action_mailroom/inbound_email.rb)4
-rw-r--r--app/models/action_mailbox/inbound_email/incineratable.rb (renamed from app/models/action_mailroom/inbound_email/incineratable.rb)4
-rw-r--r--app/models/action_mailbox/inbound_email/incineratable/incineration.rb (renamed from app/models/action_mailroom/inbound_email/incineratable/incineration.rb)4
-rw-r--r--app/models/action_mailbox/inbound_email/message_id.rb (renamed from app/models/action_mailroom/inbound_email/message_id.rb)2
-rw-r--r--app/models/action_mailbox/inbound_email/routable.rb (renamed from app/models/action_mailroom/inbound_email/routable.rb)4
-rw-r--r--app/views/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/views/layouts/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/views/rails/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/views/rails/conductor/.DS_Storebin0 -> 6148 bytes
-rw-r--r--app/views/rails/conductor/action_mailbox/inbound_emails/index.html.erb (renamed from app/views/rails/conductor/action_mailroom/inbound_emails/index.html.erb)0
-rw-r--r--app/views/rails/conductor/action_mailbox/inbound_emails/new.html.erb (renamed from app/views/rails/conductor/action_mailroom/inbound_emails/new.html.erb)0
-rw-r--r--app/views/rails/conductor/action_mailbox/inbound_emails/show.html.erb (renamed from app/views/rails/conductor/action_mailroom/inbound_emails/show.html.erb)0
-rw-r--r--config/routes.rb4
-rw-r--r--db/.DS_Storebin0 -> 6148 bytes
-rw-r--r--db/migrate/20180917164000_create_action_mailbox_tables.rb (renamed from db/migrate/20180917164000_create_action_mailroom_tables.rb)4
-rw-r--r--lib/.DS_Storebin0 -> 6148 bytes
-rw-r--r--lib/action_mailbox.rb10
-rw-r--r--lib/action_mailbox/base.rb (renamed from lib/action_mailroom/mailbox.rb)8
-rw-r--r--lib/action_mailbox/callbacks.rb26
-rw-r--r--lib/action_mailbox/engine.rb14
-rw-r--r--lib/action_mailbox/router.rb (renamed from lib/action_mailroom/router.rb)4
-rw-r--r--lib/action_mailbox/router/route.rb (renamed from lib/action_mailroom/router/route.rb)2
-rw-r--r--lib/action_mailbox/routing.rb17
-rw-r--r--lib/action_mailbox/test_helper.rb (renamed from lib/action_mailroom/test_helper.rb)4
-rw-r--r--lib/action_mailbox/version.rb (renamed from lib/action_mailroom/version.rb)2
-rw-r--r--lib/action_mailroom.rb8
-rw-r--r--lib/action_mailroom/engine.rb14
-rw-r--r--lib/action_mailroom/mailbox/callbacks.rb28
-rw-r--r--lib/action_mailroom/mailbox/routing.rb15
-rw-r--r--lib/tasks/action_mailbox.rake (renamed from lib/tasks/action_mailroom.rake)8
-rw-r--r--test/.DS_Storebin0 -> 6148 bytes
-rw-r--r--test/dummy/app/mailboxes/application_mailbox.rb2
-rw-r--r--test/dummy/config/application.rb2
-rw-r--r--test/dummy/db/development.sqlite3bin49152 -> 0 bytes
-rw-r--r--test/dummy/db/migrate/20180208205311_create_action_mailroom_tables.rb4
-rw-r--r--test/dummy/db/schema.rb2
-rw-r--r--test/test_helper.rb4
-rw-r--r--test/unit/.DS_Storebin0 -> 6148 bytes
-rw-r--r--test/unit/controller_test.rb8
-rw-r--r--test/unit/inbound_email/incineration_test.rb4
-rw-r--r--test/unit/inbound_email/message_id_test.rb2
-rw-r--r--test/unit/inbound_email_test.rb2
-rw-r--r--test/unit/mailbox/callbacks_test.rb4
-rw-r--r--test/unit/mailbox/routing_test.rb8
-rw-r--r--test/unit/mailbox/state_test.rb8
-rw-r--r--test/unit/router_test.rb10
60 files changed, 156 insertions, 154 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index 0ceac134ff..b3f3ab1f70 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
- actionmailroom (0.1.0)
+ actionmailbox (0.1.0)
rails (>= 5.2.0)
GEM
@@ -121,7 +121,7 @@ PLATFORMS
ruby
DEPENDENCIES
- actionmailroom!
+ actionmailbox!
bundler (~> 1.15)
byebug
sqlite3
diff --git a/actionmailroom.gemspec b/actionmailbox.gemspec
index 217904d62f..e413ac57f6 100644
--- a/actionmailroom.gemspec
+++ b/actionmailbox.gemspec
@@ -1,16 +1,16 @@
$:.push File.expand_path("lib", __dir__)
# Maintain your gem's version:
-require "action_mailroom/version"
+require "action_mailbox/version"
# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
- s.name = "actionmailroom"
- s.version = ActionMailroom::VERSION
+ s.name = "actionmailbox"
+ s.version = ActionMailbox::VERSION
s.authors = ["Jeremy Daer", "David Heinemeier Hansson"]
s.email = ["jeremy@basecamp.com", "david@loudthinking.com"]
s.summary = "Receive and process incoming emails in Rails"
- s.homepage = "https://github.com/basecamp/actionmailroom"
+ s.homepage = "https://github.com/basecamp/actionmailbox"
s.license = "MIT"
s.required_ruby_version = ">= 2.5.0"
diff --git a/app/.DS_Store b/app/.DS_Store
new file mode 100644
index 0000000000..6719b65737
--- /dev/null
+++ b/app/.DS_Store
Binary files differ
diff --git a/app/controllers/.DS_Store b/app/controllers/.DS_Store
new file mode 100644
index 0000000000..ea1205963a
--- /dev/null
+++ b/app/controllers/.DS_Store
Binary files differ
diff --git a/app/controllers/action_mailroom/inbound_emails_controller.rb b/app/controllers/action_mailbox/inbound_emails_controller.rb
index 57e0530ac6..ec9bd6f229 100644
--- a/app/controllers/action_mailroom/inbound_emails_controller.rb
+++ b/app/controllers/action_mailbox/inbound_emails_controller.rb
@@ -1,12 +1,12 @@
# TODO: Add access protection using basic auth with verified tokens. Maybe coming from credentials by default?
# TODO: Spam/malware catching?
# TODO: Specific bounces for SMTP good citizenship: 200/404/400
-class ActionMailroom::InboundEmailsController < ActionController::Base
+class ActionMailbox::InboundEmailsController < ActionController::Base
skip_forgery_protection
before_action :require_rfc822_message, only: :create
def create
- ActionMailroom::InboundEmail.create_and_extract_message_id!(params[:message])
+ ActionMailbox::InboundEmail.create_and_extract_message_id!(params[:message])
head :created
end
diff --git a/app/controllers/rails/.DS_Store b/app/controllers/rails/.DS_Store
new file mode 100644
index 0000000000..627263b12d
--- /dev/null
+++ b/app/controllers/rails/.DS_Store
Binary files differ
diff --git a/app/controllers/rails/conductor/action_mailroom/inbound_emails_controller.rb b/app/controllers/rails/conductor/action_mailbox/inbound_emails_controller.rb
index a5a1f34929..70537da9c4 100644
--- a/app/controllers/rails/conductor/action_mailroom/inbound_emails_controller.rb
+++ b/app/controllers/rails/conductor/action_mailbox/inbound_emails_controller.rb
@@ -1,13 +1,13 @@
-class Rails::Conductor::ActionMailroom::InboundEmailsController < Rails::Conductor::BaseController
+class Rails::Conductor::ActionMailbox::InboundEmailsController < Rails::Conductor::BaseController
def index
- @inbound_emails = ActionMailroom::InboundEmail.order(created_at: :desc)
+ @inbound_emails = ActionMailbox::InboundEmail.order(created_at: :desc)
end
def new
end
def show
- @inbound_email = ActionMailroom::InboundEmail.find(params[:id])
+ @inbound_email = ActionMailbox::InboundEmail.find(params[:id])
end
def create
@@ -21,7 +21,7 @@ class Rails::Conductor::ActionMailroom::InboundEmailsController < Rails::Conduct
end
def create_inbound_email(mail)
- ActionMailroom::InboundEmail.create! raw_email: \
+ ActionMailbox::InboundEmail.create! raw_email: \
{ io: StringIO.new(mail.to_s), filename: 'inbound.eml', content_type: 'message/rfc822', identify: false }
end
end
diff --git a/app/controllers/rails/conductor/action_mailroom/reroutes_controller.rb b/app/controllers/rails/conductor/action_mailbox/reroutes_controller.rb
index 028ed9e2d6..226116a3d6 100644
--- a/app/controllers/rails/conductor/action_mailroom/reroutes_controller.rb
+++ b/app/controllers/rails/conductor/action_mailbox/reroutes_controller.rb
@@ -1,6 +1,6 @@
-class Rails::Conductor::ActionMailroom::ReroutesController < Rails::Conductor::BaseController
+class Rails::Conductor::ActionMailbox::ReroutesController < Rails::Conductor::BaseController
def create
- inbound_email = ActionMailroom::InboundEmail.find(params[:inbound_email_id])
+ inbound_email = ActionMailbox::InboundEmail.find(params[:inbound_email_id])
reroute inbound_email
redirect_to main_app.rails_conductor_inbound_email_url(inbound_email)
diff --git a/app/jobs/.DS_Store b/app/jobs/.DS_Store
new file mode 100644
index 0000000000..4f6e8d17e4
--- /dev/null
+++ b/app/jobs/.DS_Store
Binary files differ
diff --git a/app/jobs/action_mailbox/inbound_email/incineration_job.rb b/app/jobs/action_mailbox/inbound_email/incineration_job.rb
new file mode 100644
index 0000000000..a2911efef1
--- /dev/null
+++ b/app/jobs/action_mailbox/inbound_email/incineration_job.rb
@@ -0,0 +1,11 @@
+class ActionMailbox::InboundEmail::IncinerationJob < ApplicationJob
+ queue_as :action_mailbox_incineration
+
+ def self.schedule(inbound_email)
+ set(wait: ActionMailbox::InboundEmail::Incineratable::INCINERATABLE_AFTER).perform_later(inbound_email)
+ end
+
+ def perform(inbound_email)
+ inbound_email.incinerate
+ end
+end
diff --git a/app/jobs/action_mailbox/routing_job.rb b/app/jobs/action_mailbox/routing_job.rb
new file mode 100644
index 0000000000..a2618bb8aa
--- /dev/null
+++ b/app/jobs/action_mailbox/routing_job.rb
@@ -0,0 +1,7 @@
+class ActionMailbox::RoutingJob < ActiveJob::Base
+ queue_as :action_mailbox_routing
+
+ def perform(inbound_email)
+ ApplicationMailbox.route inbound_email
+ end
+end
diff --git a/app/jobs/action_mailroom/inbound_email/incineration_job.rb b/app/jobs/action_mailroom/inbound_email/incineration_job.rb
deleted file mode 100644
index fa1d346008..0000000000
--- a/app/jobs/action_mailroom/inbound_email/incineration_job.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class ActionMailroom::InboundEmail::IncinerationJob < ApplicationJob
- queue_as :action_mailroom_incineration
-
- def self.schedule(inbound_email)
- set(wait: ActionMailroom::InboundEmail::Incineratable::INCINERATABLE_AFTER).perform_later(inbound_email)
- end
-
- def perform(inbound_email)
- inbound_email.incinerate
- end
-end
diff --git a/app/jobs/action_mailroom/routing_job.rb b/app/jobs/action_mailroom/routing_job.rb
deleted file mode 100644
index 85a3c7ab00..0000000000
--- a/app/jobs/action_mailroom/routing_job.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class ActionMailroom::RoutingJob < ActiveJob::Base
- queue_as :action_mailroom_routing
-
- def perform(inbound_email)
- ApplicationMailbox.route inbound_email
- end
-end
diff --git a/app/models/.DS_Store b/app/models/.DS_Store
new file mode 100644
index 0000000000..4f6e8d17e4
--- /dev/null
+++ b/app/models/.DS_Store
Binary files differ
diff --git a/app/models/action_mailroom/inbound_email.rb b/app/models/action_mailbox/inbound_email.rb
index cf7370d543..f2589d7429 100644
--- a/app/models/action_mailroom/inbound_email.rb
+++ b/app/models/action_mailbox/inbound_email.rb
@@ -1,7 +1,7 @@
require "mail"
-class ActionMailroom::InboundEmail < ActiveRecord::Base
- self.table_name = "action_mailroom_inbound_emails"
+class ActionMailbox::InboundEmail < ActiveRecord::Base
+ self.table_name = "action_mailbox_inbound_emails"
include Incineratable, MessageId, Routable
diff --git a/app/models/action_mailroom/inbound_email/incineratable.rb b/app/models/action_mailbox/inbound_email/incineratable.rb
index 83ccec89ba..6ba73c0c6d 100644
--- a/app/models/action_mailroom/inbound_email/incineratable.rb
+++ b/app/models/action_mailbox/inbound_email/incineratable.rb
@@ -1,4 +1,4 @@
-module ActionMailroom::InboundEmail::Incineratable
+module ActionMailbox::InboundEmail::Incineratable
extend ActiveSupport::Concern
# TODO: Extract into framework configuration
@@ -26,6 +26,6 @@ module ActionMailroom::InboundEmail::Incineratable
end
def incinerate_later
- ActionMailroom::InboundEmail::IncinerationJob.schedule(self)
+ ActionMailbox::InboundEmail::IncinerationJob.schedule(self)
end
end
diff --git a/app/models/action_mailroom/inbound_email/incineratable/incineration.rb b/app/models/action_mailbox/inbound_email/incineratable/incineration.rb
index 8b88c1fc5b..bd2bf7d91e 100644
--- a/app/models/action_mailroom/inbound_email/incineratable/incineration.rb
+++ b/app/models/action_mailbox/inbound_email/incineratable/incineration.rb
@@ -1,4 +1,4 @@
-class ActionMailroom::InboundEmail::Incineratable::Incineration
+class ActionMailbox::InboundEmail::Incineratable::Incineration
def initialize(inbound_email)
@inbound_email = inbound_email
end
@@ -9,7 +9,7 @@ class ActionMailroom::InboundEmail::Incineratable::Incineration
private
def due?
- @inbound_email.updated_at < ActionMailroom::InboundEmail::Incineratable::INCINERATABLE_AFTER.ago.end_of_day
+ @inbound_email.updated_at < ActionMailbox::InboundEmail::Incineratable::INCINERATABLE_AFTER.ago.end_of_day
end
def processed?
diff --git a/app/models/action_mailroom/inbound_email/message_id.rb b/app/models/action_mailbox/inbound_email/message_id.rb
index 6bdda8c1c7..590dbfc4d7 100644
--- a/app/models/action_mailroom/inbound_email/message_id.rb
+++ b/app/models/action_mailbox/inbound_email/message_id.rb
@@ -1,4 +1,4 @@
-module ActionMailroom::InboundEmail::MessageId
+module ActionMailbox::InboundEmail::MessageId
extend ActiveSupport::Concern
included do
diff --git a/app/models/action_mailroom/inbound_email/routable.rb b/app/models/action_mailbox/inbound_email/routable.rb
index 5075db326e..1928f9e387 100644
--- a/app/models/action_mailroom/inbound_email/routable.rb
+++ b/app/models/action_mailbox/inbound_email/routable.rb
@@ -1,4 +1,4 @@
-module ActionMailroom::InboundEmail::Routable
+module ActionMailbox::InboundEmail::Routable
extend ActiveSupport::Concern
included do
@@ -6,6 +6,6 @@ module ActionMailroom::InboundEmail::Routable
end
def route_later
- ActionMailroom::RoutingJob.perform_later self
+ ActionMailbox::RoutingJob.perform_later self
end
end
diff --git a/app/views/.DS_Store b/app/views/.DS_Store
new file mode 100644
index 0000000000..bedd266c7a
--- /dev/null
+++ b/app/views/.DS_Store
Binary files differ
diff --git a/app/views/layouts/.DS_Store b/app/views/layouts/.DS_Store
new file mode 100644
index 0000000000..5de81d0983
--- /dev/null
+++ b/app/views/layouts/.DS_Store
Binary files differ
diff --git a/app/views/rails/.DS_Store b/app/views/rails/.DS_Store
new file mode 100644
index 0000000000..627263b12d
--- /dev/null
+++ b/app/views/rails/.DS_Store
Binary files differ
diff --git a/app/views/rails/conductor/.DS_Store b/app/views/rails/conductor/.DS_Store
new file mode 100644
index 0000000000..4f6e8d17e4
--- /dev/null
+++ b/app/views/rails/conductor/.DS_Store
Binary files differ
diff --git a/app/views/rails/conductor/action_mailroom/inbound_emails/index.html.erb b/app/views/rails/conductor/action_mailbox/inbound_emails/index.html.erb
index 19c53984e2..19c53984e2 100644
--- a/app/views/rails/conductor/action_mailroom/inbound_emails/index.html.erb
+++ b/app/views/rails/conductor/action_mailbox/inbound_emails/index.html.erb
diff --git a/app/views/rails/conductor/action_mailroom/inbound_emails/new.html.erb b/app/views/rails/conductor/action_mailbox/inbound_emails/new.html.erb
index be989ff0bc..be989ff0bc 100644
--- a/app/views/rails/conductor/action_mailroom/inbound_emails/new.html.erb
+++ b/app/views/rails/conductor/action_mailbox/inbound_emails/new.html.erb
diff --git a/app/views/rails/conductor/action_mailroom/inbound_emails/show.html.erb b/app/views/rails/conductor/action_mailbox/inbound_emails/show.html.erb
index e761904196..e761904196 100644
--- a/app/views/rails/conductor/action_mailroom/inbound_emails/show.html.erb
+++ b/app/views/rails/conductor/action_mailbox/inbound_emails/show.html.erb
diff --git a/config/routes.rb b/config/routes.rb
index b44ddf648a..733f137262 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,10 +1,10 @@
# frozen_string_literal: true
Rails.application.routes.draw do
- post "/rails/action_mailroom/inbound_emails" => "action_mailroom/inbound_emails#create", as: :rails_inbound_emails
+ post "/rails/action_mailbox/inbound_emails" => "action_mailbox/inbound_emails#create", as: :rails_inbound_emails
# TODO: Should these be mounted within the engine only?
- scope "rails/conductor/action_mailroom/", module: "rails/conductor/action_mailroom" do
+ scope "rails/conductor/action_mailbox/", module: "rails/conductor/action_mailbox" do
resources :inbound_emails, as: :rails_conductor_inbound_emails
post ":inbound_email_id/reroute" => "reroutes#create", as: :rails_conductor_inbound_email_reroute
end
diff --git a/db/.DS_Store b/db/.DS_Store
new file mode 100644
index 0000000000..ef5ba06993
--- /dev/null
+++ b/db/.DS_Store
Binary files differ
diff --git a/db/migrate/20180917164000_create_action_mailroom_tables.rb b/db/migrate/20180917164000_create_action_mailbox_tables.rb
index cea05a6437..85e19bc3c6 100644
--- a/db/migrate/20180917164000_create_action_mailroom_tables.rb
+++ b/db/migrate/20180917164000_create_action_mailbox_tables.rb
@@ -1,6 +1,6 @@
-class CreateActionMailroomTables < ActiveRecord::Migration[5.2]
+class CreateActionMailboxTables < ActiveRecord::Migration[5.2]
def change
- create_table :action_mailroom_inbound_emails do |t|
+ create_table :action_mailbox_inbound_emails do |t|
t.integer :status, default: 0, null: false
t.string :message_id
diff --git a/lib/.DS_Store b/lib/.DS_Store
new file mode 100644
index 0000000000..4bb82d51a5
--- /dev/null
+++ b/lib/.DS_Store
Binary files differ
diff --git a/lib/action_mailbox.rb b/lib/action_mailbox.rb
new file mode 100644
index 0000000000..f638dc3f80
--- /dev/null
+++ b/lib/action_mailbox.rb
@@ -0,0 +1,10 @@
+require "action_mailbox/engine"
+
+module ActionMailbox
+ extend ActiveSupport::Autoload
+
+ autoload :Base
+ autoload :Router
+ autoload :Callbacks
+ autoload :Routing
+end
diff --git a/lib/action_mailroom/mailbox.rb b/lib/action_mailbox/base.rb
index 936054810f..476c343415 100644
--- a/lib/action_mailroom/mailbox.rb
+++ b/lib/action_mailbox/base.rb
@@ -1,11 +1,11 @@
require "active_support/rescuable"
-require "action_mailroom/mailbox/callbacks"
-require "action_mailroom/mailbox/routing"
+require "action_mailbox/callbacks"
+require "action_mailbox/routing"
-class ActionMailroom::Mailbox
+class ActionMailbox::Base
include ActiveSupport::Rescuable
- include Callbacks, Routing
+ include ActionMailbox::Callbacks, ActionMailbox::Routing
attr_reader :inbound_email
delegate :mail, :bounced!, to: :inbound_email
diff --git a/lib/action_mailbox/callbacks.rb b/lib/action_mailbox/callbacks.rb
new file mode 100644
index 0000000000..33caaafd2a
--- /dev/null
+++ b/lib/action_mailbox/callbacks.rb
@@ -0,0 +1,26 @@
+require "active_support/callbacks"
+
+module ActionMailbox
+ module Callbacks
+ extend ActiveSupport::Concern
+ include ActiveSupport::Callbacks
+
+ included do
+ define_callbacks :process
+ end
+
+ module ClassMethods
+ def before_processing(*methods, &block)
+ set_callback(:process, :before, *methods, &block)
+ end
+
+ def after_processing(*methods, &block)
+ set_callback(:process, :after, *methods, &block)
+ end
+
+ def around_processing(*methods, &block)
+ set_callback(:process, :around, *methods, &block)
+ end
+ end
+ end
+end
diff --git a/lib/action_mailbox/engine.rb b/lib/action_mailbox/engine.rb
new file mode 100644
index 0000000000..92852a0fa3
--- /dev/null
+++ b/lib/action_mailbox/engine.rb
@@ -0,0 +1,14 @@
+require "rails/engine"
+
+module ActionMailbox
+ class Engine < Rails::Engine
+ isolate_namespace ActionMailbox
+ config.eager_load_namespaces << ActionMailbox
+
+ initializer "action_mailbox.config" do
+ config.after_initialize do |app|
+ # Configure
+ end
+ end
+ end
+end
diff --git a/lib/action_mailroom/router.rb b/lib/action_mailbox/router.rb
index 29ba803e03..8ba3ad0bae 100644
--- a/lib/action_mailroom/router.rb
+++ b/lib/action_mailbox/router.rb
@@ -1,4 +1,4 @@
-class ActionMailroom::Router
+class ActionMailbox::Router
class RoutingError < StandardError; end
def initialize
@@ -33,4 +33,4 @@ class ActionMailroom::Router
end
end
-require "action_mailroom/router/route"
+require "action_mailbox/router/route"
diff --git a/lib/action_mailroom/router/route.rb b/lib/action_mailbox/router/route.rb
index 6d0b922275..7be4407339 100644
--- a/lib/action_mailroom/router/route.rb
+++ b/lib/action_mailbox/router/route.rb
@@ -1,4 +1,4 @@
-class ActionMailroom::Router::Route
+class ActionMailbox::Router::Route
class InvalidAddressError < StandardError; end
attr_reader :address, :mailbox_name
diff --git a/lib/action_mailbox/routing.rb b/lib/action_mailbox/routing.rb
new file mode 100644
index 0000000000..b40e2774e4
--- /dev/null
+++ b/lib/action_mailbox/routing.rb
@@ -0,0 +1,17 @@
+module ActionMailbox
+ module Routing
+ extend ActiveSupport::Concern
+
+ class_methods do
+ attr_reader :router
+
+ def routing(routes)
+ (@router ||= ActionMailbox::Router.new).add_routes(routes)
+ end
+
+ def route(inbound_email)
+ @router.route(inbound_email)
+ end
+ end
+ end
+end
diff --git a/lib/action_mailroom/test_helper.rb b/lib/action_mailbox/test_helper.rb
index 3e1ff87839..65a15a1281 100644
--- a/lib/action_mailroom/test_helper.rb
+++ b/lib/action_mailbox/test_helper.rb
@@ -1,6 +1,6 @@
require "mail"
-module ActionMailroom
+module ActionMailbox
module TestHelper
# Create an InboundEmail record using an eml fixture in the format of message/rfc822
# referenced with +fixture_name+ located in +test/fixtures/files/fixture_name+.
@@ -14,7 +14,7 @@ module ActionMailroom
end
def create_inbound_email(io, filename: 'mail.eml', status: :processing)
- ActionMailroom::InboundEmail.create_and_extract_message_id! \
+ ActionMailbox::InboundEmail.create_and_extract_message_id! \
ActionDispatch::Http::UploadedFile.new(tempfile: io, filename: filename, type: 'message/rfc822'),
status: status
end
diff --git a/lib/action_mailroom/version.rb b/lib/action_mailbox/version.rb
index 64a9d8eacd..23c615dbbd 100644
--- a/lib/action_mailroom/version.rb
+++ b/lib/action_mailbox/version.rb
@@ -1,3 +1,3 @@
-module ActionMailroom
+module ActionMailbox
VERSION = '0.1.0'
end
diff --git a/lib/action_mailroom.rb b/lib/action_mailroom.rb
deleted file mode 100644
index e50d1c4ebe..0000000000
--- a/lib/action_mailroom.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require "action_mailroom/engine"
-
-module ActionMailroom
- extend ActiveSupport::Autoload
-
- autoload :Mailbox
- autoload :Router
-end
diff --git a/lib/action_mailroom/engine.rb b/lib/action_mailroom/engine.rb
deleted file mode 100644
index 6a8d4c23c0..0000000000
--- a/lib/action_mailroom/engine.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require "rails/engine"
-
-module ActionMailroom
- class Engine < Rails::Engine
- isolate_namespace ActionMailroom
- config.eager_load_namespaces << ActionMailroom
-
- initializer "action_mailroom.config" do
- config.after_initialize do |app|
- # Configure
- end
- end
- end
-end
diff --git a/lib/action_mailroom/mailbox/callbacks.rb b/lib/action_mailroom/mailbox/callbacks.rb
deleted file mode 100644
index ae5a461d8f..0000000000
--- a/lib/action_mailroom/mailbox/callbacks.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require "active_support/callbacks"
-
-module ActionMailroom
- class Mailbox
- module Callbacks
- extend ActiveSupport::Concern
- include ActiveSupport::Callbacks
-
- included do
- define_callbacks :process
- end
-
- module ClassMethods
- def before_processing(*methods, &block)
- set_callback(:process, :before, *methods, &block)
- end
-
- def after_processing(*methods, &block)
- set_callback(:process, :after, *methods, &block)
- end
-
- def around_processing(*methods, &block)
- set_callback(:process, :around, *methods, &block)
- end
- end
- end
- end
-end
diff --git a/lib/action_mailroom/mailbox/routing.rb b/lib/action_mailroom/mailbox/routing.rb
deleted file mode 100644
index 9f082c8aa5..0000000000
--- a/lib/action_mailroom/mailbox/routing.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module ActionMailroom::Mailbox::Routing
- extend ActiveSupport::Concern
-
- class_methods do
- attr_reader :router
-
- def routing(routes)
- (@router ||= ActionMailroom::Router.new).add_routes(routes)
- end
-
- def route(inbound_email)
- @router.route(inbound_email)
- end
- end
-end
diff --git a/lib/tasks/action_mailroom.rake b/lib/tasks/action_mailbox.rake
index 5c929af119..b7c11934f8 100644
--- a/lib/tasks/action_mailroom.rake
+++ b/lib/tasks/action_mailbox.rake
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-namespace :action_mailroom do
+namespace :action_mailbox do
# Prevent migration installation task from showing up twice.
Rake::Task["install:migrations"].clear_comments
@@ -8,10 +8,10 @@ namespace :action_mailroom do
task install: %w( environment copy_migration active_storage:install )
task :copy_migration do
- if Rake::Task.task_defined?("action_mailroom:install:migrations")
- Rake::Task["action_mailroom:install:migrations"].invoke
+ if Rake::Task.task_defined?("action_mailbox:install:migrations")
+ Rake::Task["action_mailbox:install:migrations"].invoke
else
- Rake::Task["app:action_mailroom:install:migrations"].invoke
+ Rake::Task["app:action_mailbox:install:migrations"].invoke
end
end
end
diff --git a/test/.DS_Store b/test/.DS_Store
new file mode 100644
index 0000000000..4baab2932c
--- /dev/null
+++ b/test/.DS_Store
Binary files differ
diff --git a/test/dummy/app/mailboxes/application_mailbox.rb b/test/dummy/app/mailboxes/application_mailbox.rb
index 3ea37aaf8f..47fb2017d6 100644
--- a/test/dummy/app/mailboxes/application_mailbox.rb
+++ b/test/dummy/app/mailboxes/application_mailbox.rb
@@ -1,2 +1,2 @@
-class ApplicationMailbox < ActionMailroom::Mailbox
+class ApplicationMailbox < ActionMailbox::Base
end
diff --git a/test/dummy/config/application.rb b/test/dummy/config/application.rb
index dc57837cde..5018690331 100644
--- a/test/dummy/config/application.rb
+++ b/test/dummy/config/application.rb
@@ -3,7 +3,7 @@ require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
-require "action_mailroom"
+require "action_mailbox"
module Dummy
class Application < Rails::Application
diff --git a/test/dummy/db/development.sqlite3 b/test/dummy/db/development.sqlite3
deleted file mode 100644
index 8bd6b8dec3..0000000000
--- a/test/dummy/db/development.sqlite3
+++ /dev/null
Binary files differ
diff --git a/test/dummy/db/migrate/20180208205311_create_action_mailroom_tables.rb b/test/dummy/db/migrate/20180208205311_create_action_mailroom_tables.rb
index cea05a6437..85e19bc3c6 100644
--- a/test/dummy/db/migrate/20180208205311_create_action_mailroom_tables.rb
+++ b/test/dummy/db/migrate/20180208205311_create_action_mailroom_tables.rb
@@ -1,6 +1,6 @@
-class CreateActionMailroomTables < ActiveRecord::Migration[5.2]
+class CreateActionMailboxTables < ActiveRecord::Migration[5.2]
def change
- create_table :action_mailroom_inbound_emails do |t|
+ create_table :action_mailbox_inbound_emails do |t|
t.integer :status, default: 0, null: false
t.string :message_id
diff --git a/test/dummy/db/schema.rb b/test/dummy/db/schema.rb
index 339a6b2afd..6cfe7de765 100644
--- a/test/dummy/db/schema.rb
+++ b/test/dummy/db/schema.rb
@@ -12,7 +12,7 @@
ActiveRecord::Schema.define(version: 2018_02_12_164506) do
- create_table "action_mailroom_inbound_emails", force: :cascade do |t|
+ create_table "action_mailbox_inbound_emails", force: :cascade do |t|
t.integer "status", default: 0, null: false
t.string "message_id"
t.datetime "created_at", precision: 6
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 50ddc85463..b042cfb679 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -22,10 +22,10 @@ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
ActiveSupport::TestCase.fixtures :all
end
-require "action_mailroom/test_helper"
+require "action_mailbox/test_helper"
class ActiveSupport::TestCase
- include ActionMailroom::TestHelper, ActiveJob::TestHelper
+ include ActionMailbox::TestHelper, ActiveJob::TestHelper
end
if ARGV.include?("-v")
diff --git a/test/unit/.DS_Store b/test/unit/.DS_Store
new file mode 100644
index 0000000000..69403a911f
--- /dev/null
+++ b/test/unit/.DS_Store
Binary files differ
diff --git a/test/unit/controller_test.rb b/test/unit/controller_test.rb
index f2a49f415f..508e561244 100644
--- a/test/unit/controller_test.rb
+++ b/test/unit/controller_test.rb
@@ -1,19 +1,19 @@
require_relative '../test_helper'
-class ActionMailroom::InboundEmailsControllerTest < ActionDispatch::IntegrationTest
+class ActionMailbox::InboundEmailsControllerTest < ActionDispatch::IntegrationTest
test "receiving a valid RFC 822 message" do
- assert_difference -> { ActionMailroom::InboundEmail.count }, +1 do
+ assert_difference -> { ActionMailbox::InboundEmail.count }, +1 do
post_inbound_email "welcome.eml"
end
assert_response :created
- inbound_email = ActionMailroom::InboundEmail.last
+ inbound_email = ActionMailbox::InboundEmail.last
assert_equal file_fixture('../files/welcome.eml').read, inbound_email.raw_email.download
end
test "rejecting a message of an unsupported type" do
- assert_no_difference -> { ActionMailroom::InboundEmail.count } do
+ assert_no_difference -> { ActionMailbox::InboundEmail.count } do
post rails_inbound_emails_url, params: { message: fixture_file_upload('files/text.txt', 'text/plain') }
end
diff --git a/test/unit/inbound_email/incineration_test.rb b/test/unit/inbound_email/incineration_test.rb
index 3de0af3225..212325b92d 100644
--- a/test/unit/inbound_email/incineration_test.rb
+++ b/test/unit/inbound_email/incineration_test.rb
@@ -1,10 +1,10 @@
require_relative '../../test_helper'
-class ActionMailroom::InboundEmail::IncinerationTest < ActiveSupport::TestCase
+class ActionMailbox::InboundEmail::IncinerationTest < ActiveSupport::TestCase
test "incinerate emails 30 days after they have been processed" do
freeze_time
- assert_enqueued_with job: ActionMailroom::InboundEmail::IncinerationJob, at: 30.days.from_now do
+ assert_enqueued_with job: ActionMailbox::InboundEmail::IncinerationJob, at: 30.days.from_now do
create_inbound_email_from_fixture("welcome.eml").delivered!
end
end
diff --git a/test/unit/inbound_email/message_id_test.rb b/test/unit/inbound_email/message_id_test.rb
index 75c15a531a..aa9ce90b4c 100644
--- a/test/unit/inbound_email/message_id_test.rb
+++ b/test/unit/inbound_email/message_id_test.rb
@@ -1,6 +1,6 @@
require_relative '../../test_helper'
-class ActionMailroom::InboundEmail::MessageIdTest < ActiveSupport::TestCase
+class ActionMailbox::InboundEmail::MessageIdTest < ActiveSupport::TestCase
test "message id is extracted from raw email" do
inbound_email = create_inbound_email_from_fixture("welcome.eml")
assert_equal "0CB459E0-0336-41DA-BC88-E6E28C697DDB@37signals.com", inbound_email.message_id
diff --git a/test/unit/inbound_email_test.rb b/test/unit/inbound_email_test.rb
index e4b7be2440..7c42188584 100644
--- a/test/unit/inbound_email_test.rb
+++ b/test/unit/inbound_email_test.rb
@@ -1,6 +1,6 @@
require_relative '../test_helper'
-module ActionMailroom
+module ActionMailbox
class InboundEmailTest < ActiveSupport::TestCase
test "mail provides the parsed source" do
assert_equal "Discussion: Let's debate these attachments", create_inbound_email_from_fixture("welcome.eml").mail.subject
diff --git a/test/unit/mailbox/callbacks_test.rb b/test/unit/mailbox/callbacks_test.rb
index 4cafeb3534..b6cfef9868 100644
--- a/test/unit/mailbox/callbacks_test.rb
+++ b/test/unit/mailbox/callbacks_test.rb
@@ -1,6 +1,6 @@
require_relative '../../test_helper'
-class CallbackMailbox < ActionMailroom::Mailbox
+class CallbackMailbox < ActionMailbox::Base
before_processing { $before_processing = "Ran that!" }
after_processing { $after_processing = "Ran that too!" }
around_processing ->(r, block) { block.call; $around_processing = "Ran that as well!" }
@@ -10,7 +10,7 @@ class CallbackMailbox < ActionMailroom::Mailbox
end
end
-class ActionMailroom::Mailbox::CallbacksTest < ActiveSupport::TestCase
+class ActionMailbox::Base::CallbacksTest < ActiveSupport::TestCase
setup do
$before_processing = $after_processing = $around_processing = $processed = false
@inbound_email = create_inbound_email_from_fixture("welcome.eml")
diff --git a/test/unit/mailbox/routing_test.rb b/test/unit/mailbox/routing_test.rb
index 4a8ed10eb0..320dee6aab 100644
--- a/test/unit/mailbox/routing_test.rb
+++ b/test/unit/mailbox/routing_test.rb
@@ -1,16 +1,16 @@
require_relative '../../test_helper'
-class ApplicationMailbox < ActionMailroom::Mailbox
+class ApplicationMailbox < ActionMailbox::Base
routing "replies@example.com" => :replies
end
-class RepliesMailbox < ActionMailroom::Mailbox
+class RepliesMailbox < ActionMailbox::Base
def process
$processed = mail.subject
end
end
-class ActionMailroom::Mailbox::RoutingTest < ActiveSupport::TestCase
+class ActionMailbox::Base::RoutingTest < ActiveSupport::TestCase
setup do
$processed = false
@inbound_email = create_inbound_email_from_fixture("welcome.eml")
@@ -22,7 +22,7 @@ class ActionMailroom::Mailbox::RoutingTest < ActiveSupport::TestCase
end
test "delayed routing" do
- perform_enqueued_jobs only: ActionMailroom::RoutingJob do
+ perform_enqueued_jobs only: ActionMailbox::RoutingJob do
another_inbound_email = create_inbound_email_from_fixture("welcome.eml", status: :pending)
assert_equal "Discussion: Let's debate these attachments", $processed
end
diff --git a/test/unit/mailbox/state_test.rb b/test/unit/mailbox/state_test.rb
index 6215e02837..32d16ca8fe 100644
--- a/test/unit/mailbox/state_test.rb
+++ b/test/unit/mailbox/state_test.rb
@@ -1,12 +1,12 @@
require_relative '../../test_helper'
-class SuccessfulMailbox < ActionMailroom::Mailbox
+class SuccessfulMailbox < ActionMailbox::Base
def process
$processed = mail.subject
end
end
-class UnsuccessfulMailbox < ActionMailroom::Mailbox
+class UnsuccessfulMailbox < ActionMailbox::Base
rescue_from(RuntimeError) { $processed = :failure }
def process
@@ -14,7 +14,7 @@ class UnsuccessfulMailbox < ActionMailroom::Mailbox
end
end
-class BouncingMailbox < ActionMailroom::Mailbox
+class BouncingMailbox < ActionMailbox::Base
def process
$processed = :bounced
bounced!
@@ -22,7 +22,7 @@ class BouncingMailbox < ActionMailroom::Mailbox
end
-class ActionMailroom::Mailbox::StateTest < ActiveSupport::TestCase
+class ActionMailbox::Base::StateTest < ActiveSupport::TestCase
setup do
$processed = false
@inbound_email = create_inbound_email_from_mail \
diff --git a/test/unit/router_test.rb b/test/unit/router_test.rb
index 678810a900..e244ff45f4 100644
--- a/test/unit/router_test.rb
+++ b/test/unit/router_test.rb
@@ -1,6 +1,6 @@
require_relative '../test_helper'
-class RootMailbox < ActionMailroom::Mailbox
+class RootMailbox < ActionMailbox::Base
def process
$processed_by = self.class.to_s
$processed_mail = mail
@@ -19,10 +19,10 @@ class FirstMailboxAddress
end
end
-module ActionMailroom
+module ActionMailbox
class RouterTest < ActiveSupport::TestCase
setup do
- @router = ActionMailroom::Router.new
+ @router = ActionMailbox::Router.new
$processed_by = $processed_mail = nil
end
@@ -82,7 +82,7 @@ module ActionMailroom
end
test "missing route" do
- assert_raises(ActionMailroom::Router::RoutingError) do
+ assert_raises(ActionMailbox::Router::RoutingError) do
inbound_email = create_inbound_email_from_mail(to: "going-nowhere@example.com", subject: "This is a reply")
@router.route inbound_email
assert inbound_email.bounced?
@@ -90,7 +90,7 @@ module ActionMailroom
end
test "invalid address" do
- assert_raises(ActionMailroom::Router::Route::InvalidAddressError) do
+ assert_raises(ActionMailbox::Router::Route::InvalidAddressError) do
@router.add_route Array.new, to: :first
@router.route create_inbound_email_from_mail(to: "replies-nowhere@example.com", subject: "This is a reply")
end