diff options
Diffstat (limited to 'railties')
-rw-r--r-- | railties/CHANGELOG.md | 4 | ||||
-rw-r--r-- | railties/lib/rails.rb | 19 | ||||
-rw-r--r-- | railties/lib/rails/application.rb | 9 | ||||
-rw-r--r-- | railties/lib/rails/application/configuration.rb | 5 | ||||
-rw-r--r-- | railties/lib/rails/application/finisher.rb | 9 | ||||
-rw-r--r-- | railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt | 4 | ||||
-rw-r--r-- | railties/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt | 3 | ||||
-rw-r--r-- | railties/test/application/initializers/frameworks_test.rb | 16 | ||||
-rw-r--r-- | railties/test/application/queue_test.rb | 154 |
9 files changed, 2 insertions, 221 deletions
diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index e60c26d132..3dd2944da3 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -122,10 +122,6 @@ * Load all environments available in `config.paths["config/environments"]`. *Piotr Sarnacki* -* Add `config.queue_consumer` to change the job queue consumer from the default `ActiveSupport::ThreadedQueueConsumer`. *Carlos Antonio da Silva* - -* Add `Rails.queue` for processing jobs in the background. *Yehuda Katz* - * Remove Rack::SSL in favour of ActionDispatch::SSL. *Rafael Mendonça França* * Remove Active Resource from Rails framework. *Prem Sichangrist* diff --git a/railties/lib/rails.rb b/railties/lib/rails.rb index ac8e84e366..bb98bbe5bf 100644 --- a/railties/lib/rails.rb +++ b/railties/lib/rails.rb @@ -32,25 +32,6 @@ module Rails application.config end - # Rails.queue is the application's queue. You can push a job onto - # the queue by: - # - # Rails.queue.push job - # - # A job is an object that responds to +run+. Queue consumers will - # pop jobs off of the queue and invoke the queue's +run+ method. - # - # Note that depending on your queue implementation, jobs may not - # be executed in the same process as they were created in, and - # are never executed in the same thread as they were created in. - # - # If necessary, a queue implementation may need to serialize your - # job for distribution to another process. The documentation of - # your queue will specify the requirements for that serialization. - def queue - application.queue - end - def initialize! application.initialize! end diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index bf3a26d400..9d71bf448d 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -1,5 +1,4 @@ require 'fileutils' -require 'active_support/queueing' # FIXME remove DummyKeyGenerator and this require in 4.1 require 'active_support/key_generator' require 'rails/engine' @@ -68,10 +67,9 @@ module Rails end end - attr_accessor :assets, :sandbox, :queue_consumer + attr_accessor :assets, :sandbox alias_method :sandbox?, :sandbox attr_reader :reloaders - attr_writer :queue delegate :default_url_options, :default_url_options=, to: :routes @@ -83,7 +81,6 @@ module Rails @env_config = nil @ordered_railties = nil @railties = nil - @queue = nil end # Returns true if the application is initialized. @@ -228,10 +225,6 @@ module Rails @config ||= Application::Configuration.new(find_root_with_flag("config.ru", Dir.pwd)) end - def queue #:nodoc: - @queue ||= config.queue || ActiveSupport::Queue.new - end - def to_app #:nodoc: self end diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index f15fc9296d..086fd5ed95 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -1,6 +1,5 @@ require 'active_support/core_ext/kernel/reporting' require 'active_support/file_update_checker' -require 'active_support/queueing' require 'rails/engine/configuration' module Rails @@ -13,7 +12,7 @@ module Rails :railties_order, :relative_url_root, :secret_key_base, :secret_token, :serve_static_assets, :ssl_options, :static_cache_control, :session_options, :time_zone, :reload_classes_only_on_change, - :queue, :queue_consumer, :beginning_of_week, :filter_redirect + :beginning_of_week, :filter_redirect attr_writer :log_level attr_reader :encoding @@ -44,8 +43,6 @@ module Rails @exceptions_app = nil @autoflush_log = true @log_formatter = ActiveSupport::Logger::SimpleFormatter.new - @queue = ActiveSupport::SynchronousQueue.new - @queue_consumer = nil @eager_load = nil @secret_token = nil @secret_key_base = nil diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index 09902ad597..872d78d9a4 100644 --- a/railties/lib/rails/application/finisher.rb +++ b/railties/lib/rails/application/finisher.rb @@ -96,15 +96,6 @@ module Rails ActiveSupport::Dependencies.unhook! end end - - initializer :activate_queue_consumer do |app| - if config.queue.class == ActiveSupport::Queue - app.queue_consumer = config.queue_consumer || config.queue.consumer - app.queue_consumer.logger ||= Rails.logger if app.queue_consumer.respond_to?(:logger=) - app.queue_consumer.start - at_exit { app.queue_consumer.shutdown } - end - end end end 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 593d2acfc7..68df1d1ec8 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 @@ -84,8 +84,4 @@ # Use default logging formatter so that PID and timestamp are not suppressed. config.log_formatter = ::Logger::Formatter.new - - # Default the production mode queue to an synchronous queue. You will probably - # want to replace this with an out-of-process queueing solution. - # config.queue = ActiveSupport::SynchronousQueue.new end diff --git a/railties/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt index a5ef0cd9cd..3c9c787948 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt @@ -33,7 +33,4 @@ # Print deprecation notices to the stderr. config.active_support.deprecation = :stderr - - # Use the synchronous queue to run jobs immediately. - config.queue = ActiveSupport::SynchronousQueue.new end diff --git a/railties/test/application/initializers/frameworks_test.rb b/railties/test/application/initializers/frameworks_test.rb index 40d1655c9b..bc794e1602 100644 --- a/railties/test/application/initializers/frameworks_test.rb +++ b/railties/test/application/initializers/frameworks_test.rb @@ -50,22 +50,6 @@ module ApplicationTests 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 ActiveSupport::Queue, ActionMailer::Base.queue - end - - test "allows me to configure queue for ActionMailer" do - app_file "config/environments/development.rb", <<-RUBY - AppTemplate::Application.configure do - config.action_mailer.queue = ActiveSupport::TestQueue.new - end - RUBY - - require "#{app_path}/config/environment" - assert_kind_of ActiveSupport::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 diff --git a/railties/test/application/queue_test.rb b/railties/test/application/queue_test.rb deleted file mode 100644 index 219a35da35..0000000000 --- a/railties/test/application/queue_test.rb +++ /dev/null @@ -1,154 +0,0 @@ -require 'isolation/abstract_unit' - -module ApplicationTests - class QueueTest < ActiveSupport::TestCase - include ActiveSupport::Testing::Isolation - - def setup - build_app - boot_rails - end - - def teardown - teardown_app - end - - def app_const - @app_const ||= Class.new(Rails::Application) - end - - test "the queue is a SynchronousQueue in test mode" do - app("test") - assert_kind_of ActiveSupport::SynchronousQueue, Rails.application.queue - assert_kind_of ActiveSupport::SynchronousQueue, Rails.queue - end - - test "the queue is a SynchronousQueue in development mode" do - app("development") - assert_kind_of ActiveSupport::SynchronousQueue, Rails.application.queue - assert_kind_of ActiveSupport::SynchronousQueue, Rails.queue - end - - class ThreadTrackingJob - def initialize - @origin = Thread.current.object_id - end - - def run - @target = Thread.current.object_id - end - - def ran_in_different_thread? - @origin != @target - end - - def ran? - @target - end - end - - test "in development mode, an enqueued job will be processed in the same thread" do - app("development") - - job = ThreadTrackingJob.new - Rails.queue.push job - sleep 0.1 - - assert job.ran?, "Expected job to be run" - refute job.ran_in_different_thread?, "Expected job to run in the same thread" - end - - test "in test mode, an enqueued job will be processed in the same thread" do - app("test") - - job = ThreadTrackingJob.new - Rails.queue.push job - sleep 0.1 - - assert job.ran?, "Expected job to be run" - refute job.ran_in_different_thread?, "Expected job to run in the same thread" - end - - test "in production, automatically spawn a queue consumer in a background thread" do - add_to_env_config "production", <<-RUBY - config.queue = ActiveSupport::Queue.new - RUBY - - app("production") - - assert_nil Rails.application.config.queue_consumer - assert_kind_of ActiveSupport::ThreadedQueueConsumer, Rails.application.queue_consumer - assert_equal Rails.logger, Rails.application.queue_consumer.logger - end - - test "attempting to marshal a queue will raise an exception" do - app("test") - assert_raises TypeError do - Marshal.dump Rails.queue - end - end - - def setup_custom_queue - add_to_env_config "production", <<-RUBY - require "my_queue" - config.queue = MyQueue.new - RUBY - - app_file "lib/my_queue.rb", <<-RUBY - class MyQueue - def push(job) - job.run - end - end - RUBY - - app("production") - end - - test "a custom queue implementation can be provided" do - setup_custom_queue - - assert_kind_of MyQueue, Rails.queue - - job = Struct.new(:id, :ran) do - def run - self.ran = true - end - end - - job1 = job.new(1) - Rails.queue.push job1 - - assert_equal true, job1.ran - end - - test "a custom consumer implementation can be provided" do - add_to_env_config "production", <<-RUBY - require "my_queue_consumer" - config.queue = ActiveSupport::Queue.new - config.queue_consumer = MyQueueConsumer.new - RUBY - - app_file "lib/my_queue_consumer.rb", <<-RUBY - class MyQueueConsumer - attr_reader :started - - def start - @started = true - end - end - RUBY - - app("production") - - assert_kind_of MyQueueConsumer, Rails.application.queue_consumer - assert Rails.application.queue_consumer.started - end - - test "default consumer is not used with custom queue implementation" do - setup_custom_queue - - assert_nil Rails.application.queue_consumer - end - end -end |