Class: RServiceBus2::ConfigureMonitor
- Inherits:
-
Object
- Object
- RServiceBus2::ConfigureMonitor
- Defined in:
- lib/rservicebus2/monitor_configure.rb
Overview
Configure Monitors for an rservicebus host
Instance Method Summary collapse
- #conditionally_set_app_resource(monitor, key, val) ⇒ Object
-
#conditionally_set_app_resources(monitor) ⇒ Object
Assigns appropriate resources to writable attributes in the handler that match keys in the resource hash.
-
#initialize(host, resource_manager) ⇒ ConfigureMonitor
constructor
Constructor.
-
#load_monitor(key, val) ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#monitors(env) ⇒ Object
rubocop:enable Metrics/MethodLength.
Constructor Details
#initialize(host, resource_manager) ⇒ ConfigureMonitor
Constructor
13 14 15 16 17 18 19 |
# File 'lib/rservicebus2/monitor_configure.rb', line 13 def initialize(host, resource_manager) @host = host @resource_manager = resource_manager @handler_list = {} @resource_list = {} end |
Instance Method Details
#conditionally_set_app_resource(monitor, key, val) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/rservicebus2/monitor_configure.rb', line 21 def conditionally_set_app_resource(monitor, key, val) monitor.instance_variable_set("@#{key}", val.resource) @resource_list[monitor.class.name] = [] if @resource_list[monitor.class.name].nil? @resource_list[monitor.class.name] << val @host.log "App resource attribute, #{key}, set for: #{monitor.class.name}" end |
#conditionally_set_app_resources(monitor) ⇒ Object
Assigns appropriate resources to writable attributes in the handler that
match keys in the resource hash
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rservicebus2/monitor_configure.rb', line 31 def conditionally_set_app_resources(monitor) RServiceBus2.rlog "Checking app resources for: #{monitor.class.name}" RServiceBus2.rlog "If your attribute is not getting set, check that it is in the 'attr_accessor' list" @resource_manager.all.each do |k, v| next unless monitor.class.method_defined?(k) conditionally_set_app_resource(monitor, k, v) end self end |
#load_monitor(key, val) ⇒ Object
rubocop:disable Metrics/MethodLength
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rservicebus2/monitor_configure.rb', line 43 def load_monitor(key, val) name = key.sub('RSBOB_', '') uri = URI.parse(val) monitor = nil case uri.scheme when 'dir' require 'rservicebus2/monitor/dir' monitor = MonitorDir.new(@host, name, uri) when 'awss3' require 'rservicebus2/monitor/awss3' monitor = MonitorAWSS3.new(@host, name, uri) when 'awssqs' require 'rservicebus2/monitor/awssqs' monitor = MonitorAWSSQS.new(@host, name, uri) when 'dirnotifier' require 'rservicebus2/monitor/dirnotifier' monitor = MonitorDirNotifier.new(@host, name, uri) when 'beanstalk' require 'rservicebus2/monitor/beanstalk' monitor = MonitorBeanstalk.new(@host, name, uri) else abort("Scheme, #{uri.scheme}, not recognised when configuring Monitor, #{key}=#{val}") end monitor end |
#monitors(env) ⇒ Object
rubocop:enable Metrics/MethodLength
71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/rservicebus2/monitor_configure.rb', line 71 def monitors(env) list = [] env.each do |k, v| next unless v.is_a?(String) && k.start_with?('RSBOB_') monitor = load_monitor(k, v) conditionally_set_app_resources(monitor) list << monitor end list end |