26 lines
673 B
Ruby
26 lines
673 B
Ruby
require 'travis/api/app'
|
|
|
|
class Travis::Api::App
|
|
module Extensions
|
|
# Keeps track of subclasses. Used for endpoint and middleware detection.
|
|
# This will prevent garbage collection of subclasses.
|
|
module SubclassTracker
|
|
def direct_subclasses
|
|
@direct_subclasses ||= []
|
|
end
|
|
|
|
# List of "leaf" subclasses (ie subclasses without subclasses).
|
|
def subclasses
|
|
return [self] if direct_subclasses.empty?
|
|
direct_subclasses.map(&:subclasses).flatten.uniq
|
|
end
|
|
|
|
def inherited(subclass)
|
|
super
|
|
subclass.set app_file: caller_files.first
|
|
direct_subclasses << subclass
|
|
end
|
|
end
|
|
end
|
|
end
|