1
0
Fork 0
mirror of https://github.com/endofunky/sidetiq.git synced 2022-11-09 13:53:30 -05:00

Add SubclassTracking module.

This commit is contained in:
Tobias Svensson 2013-09-17 16:48:08 +01:00
parent 011f543cb2
commit fdedc078f9
2 changed files with 42 additions and 0 deletions

View file

@ -0,0 +1,20 @@
module Sidetiq
module SubclassTracking
def subclasses(deep = false)
@subclasses ||= []
if deep
@subclasses.inject([]) do |all, subclass|
(all << subclass) + subclass.subclasses(true)
end
else
@subclasses
end
end
def inherited(klass)
super
subclasses << klass
end
end
end

View file

@ -0,0 +1,22 @@
require_relative 'helper'
class TestSubclassTracking < Sidetiq::TestCase
class Foo
extend Sidetiq::SubclassTracking
end
class Bar < Foo
end
class Baz < Bar
end
def test_subclasses_non_recursive
assert_equal [Bar], Foo.subclasses
end
def test_subclasses_recursive
assert_equal [Bar, Baz], Foo.subclasses(true)
end
end