diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index a36dad0e98..25bb680f69 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -43,7 +43,7 @@ module Rails @autoflush_log = true @log_formatter = ActiveSupport::Logger::SimpleFormatter.new @use_schema_cache_dump = true - @queue = Queue + @queue = Rails::Queueing::Queue @assets = ActiveSupport::OrderedOptions.new @assets.enabled = false diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index 6475b381f4..6a24e01f29 100644 --- a/railties/lib/rails/application/finisher.rb +++ b/railties/lib/rails/application/finisher.rb @@ -95,7 +95,7 @@ module Rails end initializer :activate_queue_consumer do |app| - if config.queue == Queue + if config.queue == Rails::Queueing::Queue consumer = Rails::Queueing::ThreadedConsumer.start(app.queue) at_exit { consumer.shutdown } end diff --git a/railties/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt index c486ae590e..24bcec854c 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt @@ -37,5 +37,5 @@ <%- end -%> # In development, use an in-memory queue for queueing - config.queue = Queue + config.queue = Rails::Queueing::Queue end diff --git a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt index 854e6e95cd..072aa8355d 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt @@ -79,5 +79,5 @@ # Default the production mode queue to an in-memory queue. You will probably # want to replace this with an out-of-process queueing solution - config.queue = Queue + config.queue = Rails::Queueing::Queue end diff --git a/railties/lib/rails/queueing.rb b/railties/lib/rails/queueing.rb index 1254baf93e..2e187b8555 100644 --- a/railties/lib/rails/queueing.rb +++ b/railties/lib/rails/queueing.rb @@ -1,5 +1,13 @@ +require "thread" + module Rails module Queueing + # A Queue that simply inherits from STDLIB's Queue. Everytime this + # queue is used, Rails automatically sets up a ThreadedConsumer + # to consume it. + class Queue < ::Queue + end + # In test mode, the Rails queue is backed by an Array so that assertions # can be made about its contents. The test queue provides a +jobs+ # method to make assertions about the queue's contents and a +drain+ diff --git a/railties/test/application/queue_test.rb b/railties/test/application/queue_test.rb index d5d88f69cb..ec809d7cc1 100644 --- a/railties/test/application/queue_test.rb +++ b/railties/test/application/queue_test.rb @@ -26,8 +26,8 @@ module ApplicationTests test "the queue is a Queue in development mode" do app("development") - assert_kind_of Queue, Rails.application.queue - assert_kind_of Queue, Rails.queue + assert_kind_of Rails::Queueing::Queue, Rails.application.queue + assert_kind_of Rails::Queueing::Queue, Rails.queue end test "in development mode, an enqueued job will be processed in a separate thread" do diff --git a/railties/test/queueing/threaded_consumer_test.rb b/railties/test/queueing/threaded_consumer_test.rb index dd5efa26ea..559de2a82d 100644 --- a/railties/test/queueing/threaded_consumer_test.rb +++ b/railties/test/queueing/threaded_consumer_test.rb @@ -15,7 +15,7 @@ class TestThreadConsumer < ActiveSupport::TestCase end def setup - @queue = Queue.new + @queue = Rails::Queueing::Queue.new @consumer = Rails::Queueing::ThreadedConsumer.start(@queue) end