Class: Anomonitor::Jobs::Browser
- Inherits:
-
Object
- Object
- Anomonitor::Jobs::Browser
- Defined in:
- lib/anomonitor/jobs/browser.rb
Overview
Fetches live job rows from every enabled job collector backend.
Constant Summary collapse
- DEFAULT_LIMIT =
100- STATUSES =
%w[all pending failed locked].freeze
Class Method Summary collapse
Instance Method Summary collapse
- #enabled_sources ⇒ Object
- #fetch ⇒ Object
-
#initialize(filters = {}) ⇒ Browser
constructor
A new instance of Browser.
Constructor Details
#initialize(filters = {}) ⇒ Browser
Returns a new instance of Browser.
28 29 30 |
# File 'lib/anomonitor/jobs/browser.rb', line 28 def initialize(filters = {}) @filters = normalize(filters) end |
Class Method Details
.enabled_sources ⇒ Object
14 15 16 |
# File 'lib/anomonitor/jobs/browser.rb', line 14 def self.enabled_sources new.enabled_sources end |
.fetch(filters = {}) ⇒ Object
10 11 12 |
# File 'lib/anomonitor/jobs/browser.rb', line 10 def self.fetch(filters = {}) new(filters).fetch end |
.status_options(source = nil) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/anomonitor/jobs/browser.rb', line 18 def self.(source = nil) if source.to_s.start_with?("table:") name = source.to_s.delete_prefix("table:") table = Anomonitor.config.tables.find { |t| t.name.to_s == name } return %w[all pending failed] if table && !table.delayed_job_style? end STATUSES end |
Instance Method Details
#enabled_sources ⇒ Object
46 47 48 |
# File 'lib/anomonitor/jobs/browser.rb', line 46 def enabled_sources adapters.map(&:source_key) end |
#fetch ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/anomonitor/jobs/browser.rb', line 32 def fetch rows = [] adapters.each do |adapter| next if @filters[:source] && adapter.source_key != @filters[:source] rows.concat(Array(adapter.fetch(@filters))) rescue StandardError => e Anomonitor.logger.warn("[Anomonitor] Jobs browser (#{adapter.source_key}) error: #{e.}") end rows = filter_query(rows) rows.sort_by { |r| r.sort_at }.reverse.first(@filters[:limit]) end |