Sha256: f757f779f23d8ea3dd43e9da4c41069d8a1e456d7fea26611440d393ab58ef8a
Contents?: true
Size: 1.55 KB
Versions: 3
Compression:
Stored size: 1.55 KB
Contents
# frozen_string_literal: true module Bulkrax module StatusInfo extend ActiveSupport::Concern included do has_many :statuses, as: :statusable, dependent: :destroy has_one :latest_status, -> { merge(Status.latest_by_statusable) }, as: :statusable, class_name: "Bulkrax::Status", inverse_of: :statusable end def current_status last_status = self.statuses.last last_status if last_status && last_status.runnable == last_run end def failed? current_status&.status_message&.match(/fail/i) end def succeeded? current_status&.status_message&.match(/^Complete$/) end def status current_status&.status_message || 'Pending' end def status_at current_status&.created_at end def status_info(e = nil) if e.nil? self.statuses.create!(status_message: 'Complete', runnable: last_run) elsif e.is_a?(String) self.statuses.create!(status_message: e, runnable: last_run) else self.statuses.create!(status_message: 'Failed', runnable: last_run, error_class: e.class.to_s, error_message: e.message, error_backtrace: e.backtrace) end end # api compatible with previous error structure def last_error return unless current_status && current_status.error_class.present? { error_class: current_status.error_class, error_message: current_status.error_message, error_trace: current_status.error_backtrace }.with_indifferent_access end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
bulkrax-1.0.2 | app/models/concerns/bulkrax/status_info.rb |
bulkrax-1.0.1 | app/models/concerns/bulkrax/status_info.rb |
bulkrax-1.0.0 | app/models/concerns/bulkrax/status_info.rb |