Class: Rearview::MetricsValidatorTask
- Inherits:
-
Object
- Object
- Rearview::MetricsValidatorTask
- Includes:
- Celluloid, Logger
- Defined in:
- lib/rearview/metrics_validator_task.rb
Defined Under Namespace
Classes: StatsTaskError
Instance Attribute Summary collapse
-
#cron_expression ⇒ Object
readonly
Returns the value of attribute cron_expression.
Instance Method Summary collapse
- #alert_validation_failed(job) ⇒ Object
-
#initialize(cron_expression, start = true) ⇒ MetricsValidatorTask
constructor
A new instance of MetricsValidatorTask.
- #run ⇒ Object
- #schedule ⇒ Object
Methods included from Logger
Constructor Details
#initialize(cron_expression, start = true) ⇒ MetricsValidatorTask
Returns a new instance of MetricsValidatorTask.
10 11 12 13 |
# File 'lib/rearview/metrics_validator_task.rb', line 10 def initialize(cron_expression,start=true) @cron_expression = cron_expression schedule if start end |
Instance Attribute Details
#cron_expression ⇒ Object (readonly)
Returns the value of attribute cron_expression.
8 9 10 |
# File 'lib/rearview/metrics_validator_task.rb', line 8 def cron_expression @cron_expression end |
Instance Method Details
#alert_validation_failed(job) ⇒ Object
49 50 51 52 |
# File 'lib/rearview/metrics_validator_task.rb', line 49 def alert_validation_failed(job) logger.debug "#{self} alerting on invalid metrics for #{job.id}" Rearview::MetricsValidationMailer.validation_failed_email(job.user.email,job).deliver end |
#run ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rearview/metrics_validator_task.rb', line 32 def run logger.debug "#{self} run" validator = Rearview::MetricsValidator.new({ attributes: [:metrics], cache: true }) ActiveRecord::Base.connection_pool.with_connection do Rearview::Job.schedulable.load.each do |job| validator.validate_each(job,:metrics,job.metrics) unless job.errors[:metrics].empty? alert_validation_failed(job) end end end rescue logger.error "#{self} run failed: #{$!}\n#{$@.join("\n")}" ensure schedule end |
#schedule ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/rearview/metrics_validator_task.rb', line 15 def schedule logger.debug "#{self} schedule" if ActiveRecord::Base.connection_pool.active_connection? ActiveRecord::Base.connection_pool.release_connection end delay = if cron_expression == '0 * * * * ?' 60.0 else Rearview::CronHelper.next_valid_time_after(cron_expression) end logger.info "#{self} scheduled to run next in #{delay}s" if(@timer) @timer.cancel end @timer = after(delay) { self.run } end |