1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

use descendants to get class that inherited ActiveJob::Base

`subclasses` get only child classes.
Therefore, if create a job common parent class as `ApplicationJob`,
inherited class does not get properly.

(cherry picked from commit 0b2197774c)
This commit is contained in:
yuuji.yaginuma 2016-09-05 09:13:24 +09:00 committed by Andrew White
parent 15a972e080
commit 74a49ba08f
4 changed files with 17 additions and 1 deletions

View file

@ -11,7 +11,7 @@ module ActiveJob
def before_setup # :nodoc:
test_adapter = queue_adapter_for_test
@old_queue_adapters = (ActiveJob::Base.subclasses << ActiveJob::Base).select do |klass|
@old_queue_adapters = (ActiveJob::Base.descendants << ActiveJob::Base).select do |klass|
# only override explicitly set adapters, a quirk of `class_attribute`
klass.singleton_class.public_instance_methods(false).include?(:_queue_adapter)
end.map do |klass|

View file

@ -5,6 +5,7 @@ require 'jobs/hello_job'
require 'jobs/logging_job'
require 'jobs/nested_job'
require 'jobs/rescue_job'
require 'jobs/inherited_job'
require 'models/person'
class EnqueuedJobsTest < ActiveJob::TestCase
@ -521,3 +522,9 @@ class OverrideQueueAdapterTest < ActiveJob::TestCase
assert_instance_of CustomQueueAdapter, HelloJob.queue_adapter
end
end
class InheritedJobTest < ActiveJob::TestCase
def test_queue_adapter_is_test_adapter
assert_instance_of ActiveJob::QueueAdapters::TestAdapter, InheritedJob.queue_adapter
end
end

View file

@ -0,0 +1,4 @@
require_relative "../support/job_buffer"
class ApplicationJob < ActiveJob::Base
end

View file

@ -0,0 +1,5 @@
require_relative "application_job"
class InheritedJob < ApplicationJob
self.queue_adapter = :inline
end