Allow users to configure the queue for the mailers

This allow the users to do:

    config.action_mailer.queue = MyQueue.new

and

    class UsersMailer < ActionMailer::Base
      self.queue = MyQueue.new
    end
上级 9bb4850e
......@@ -389,6 +389,8 @@ class Base < AbstractController::Base
:parts_order => [ "text/plain", "text/enriched", "text/html" ]
}.freeze
class_attribute :queue
class << self
# Register one or more Observers which will be notified when mail is delivered.
def register_observers(*observers)
......@@ -486,11 +488,6 @@ def method_missing(method_name, *args)
super
end
end
def queue
Rails.queue
end
end
attr_internal :message
......
......@@ -19,6 +19,8 @@ class Railtie < Rails::Railtie
options.javascripts_dir ||= paths["public/javascripts"].first
options.stylesheets_dir ||= paths["public/stylesheets"].first
options.queue ||= app.queue
# make sure readers methods get compiled
options.asset_path ||= app.config.asset_path
options.asset_host ||= app.config.asset_host
......
......@@ -27,14 +27,7 @@
FIXTURE_LOAD_PATH = File.expand_path('fixtures', File.dirname(__FILE__))
ActionMailer::Base.view_paths = FIXTURE_LOAD_PATH
class ActionMailer::Base < AbstractController::Base
class << self
def queue
@queue ||= Rails::Queueing::Container.new(Rails::Queueing::SynchronousQueue.new)
end
end
end
ActionMailer::Base.queue = Rails::Queueing::SynchronousQueue.new
class MockSMTP
def self.deliveries
......
......@@ -50,6 +50,23 @@ def teardown
assert_equal "test.rails", ActionMailer::Base.default_url_options[:host]
end
test "uses the default queue for ActionMailer" do
require "#{app_path}/config/environment"
assert_kind_of Rails::Queueing::Container, ActionMailer::Base.queue
end
test "allows me to configure queue for ActionMailer" do
app_file "config/environments/development.rb", <<-RUBY
AppTemplate::Application.configure do
Rails.queue[:mailer] = Rails::Queueing::TestQueue.new
config.action_mailer.queue = Rails.queue[:mailer]
end
RUBY
require "#{app_path}/config/environment"
assert_kind_of Rails::Queueing::TestQueue, ActionMailer::Base.queue
end
test "does not include url helpers as action methods" do
app_file "config/routes.rb", <<-RUBY
AppTemplate::Application.routes.draw do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册