module Skylight::Core::Probes
@api private
Public Class Methods
add_path(path)
click to toggle source
# File lib/skylight/core/probes.rb, line 26 def add_path(path) root = Pathname.new(path) Pathname.glob(root.join("./**/*.rb")).each do |f| name = f.relative_path_from(root).sub_ext("").to_s if available.key?(name) raise "duplicate probe name: #{name}; original=#{available[name]}; new=#{f}" end available[name] = f end end
available()
click to toggle source
# File lib/skylight/core/probes.rb, line 37 def available @available ||= {} end
available?(klass_name)
click to toggle source
# File lib/skylight/core/probes.rb, line 60 def available?(klass_name) !!Skylight::Core::Util::Inflector.safe_constantize(klass_name) end
installed()
click to toggle source
# File lib/skylight/core/probes.rb, line 56 def installed @installed ||= {} end
lookup_by_require_path(require_path)
click to toggle source
# File lib/skylight/core/probes.rb, line 101 def lookup_by_require_path(require_path) require_hooks[require_path] end
paths()
click to toggle source
# File lib/skylight/core/probes.rb, line 22 def paths @paths ||= [] end
probe(*probes)
click to toggle source
# File lib/skylight/core/probes.rb, line 41 def probe(*probes) unknown = probes.map(&:to_s) - available.keys unless unknown.empty? raise ArgumentError, "unknown probes: #{unknown.join(', ')}" end probes.each do |p| require available[p.to_s] end end
register(name, *args)
click to toggle source
# File lib/skylight/core/probes.rb, line 64 def register(name, *args) registration = ProbeRegistration.new(name, *args) if available?(registration.klass_name) installed[registration.klass_name] = registration registration.install else register_require_hook(registration) end end
register_require_hook(registration)
click to toggle source
# File lib/skylight/core/probes.rb, line 89 def register_require_hook(registration) registration.require_paths.each do |p| require_hooks[p] = registration end end
require_hook(require_path)
click to toggle source
# File lib/skylight/core/probes.rb, line 75 def require_hook(require_path) registration = lookup_by_require_path(require_path) return unless registration # Double check constant is available if available?(registration.klass_name) installed[registration.klass_name] = registration registration.install # Don't need this to be called again unregister_require_hook(registration) end end
require_hooks()
click to toggle source
# File lib/skylight/core/probes.rb, line 52 def require_hooks @require_hooks ||= {} end
unregister_require_hook(registration)
click to toggle source
# File lib/skylight/core/probes.rb, line 95 def unregister_require_hook(registration) registration.require_paths.each do |p| require_hooks.delete(p) end end