Module: Bp3::Noticed::PrependPerform
- Includes:
- CommonIncludes
- Defined in:
- lib/bp3/noticed/prepend_perform.rb
Instance Method Summary collapse
-
#perform(*args, **kwargs) ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#prepend_add_event(eventable:, disposition:) ⇒ Object
private
override in subclasses if needed.
-
#prepend_log_exception(exception, key:, details: {}) ⇒ Object
private
override in subclasses if needed.
-
#prepend_log_info(key:, message:, details: {}) ⇒ Object
private
override in subclasses if needed.
- #remove_state(obj) ⇒ Object private
Methods included from CommonIncludes
#check, #ensure_site, #global_request_state_class, #include_log_error, #job_key, #run, #set_global_request_state, #site_class, #state
Instance Method Details
#perform(*args, **kwargs) ⇒ Object
rubocop:disable Metrics/MethodLength
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/bp3/noticed/prepend_perform.rb', line 9 def perform(*args, **kwargs) @args = args @kwargs = kwargs set_global_request_state details = { args:, kwargs: } log = nil args = remove_state(args) kwargs = remove_state(kwargs) begin super rescue ArgumentError super() # in case super is relying on run_attrs end disposition = 'finished' log = prepend_log_info(key: "#{job_type}.#{disposition}.#{job_key}", message: "#{disposition} job_type", details:) rescue StandardError => e disposition = 'failed' log = prepend_log_exception(e, key: "#{job_type}.#{disposition}.#{job_key}", details:) raise e # to continue the normal job flow ensure prepend_add_event(eventable: log, disposition:) global_request_state_class.clear! end |
#prepend_add_event(eventable:, disposition:) ⇒ Object (private)
override in subclasses if needed
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/bp3/noticed/prepend_perform.rb', line 48 def prepend_add_event(eventable:, disposition:) return add_event(eventable:, disposition:) if respond_to?(:add_event, true) creator = global_request_state_class.current_login || global_request_state_class.current_visitor who = creator.nil? ? 'nil' : "#{creator.class.name}/#{creator.id}" did = disposition what = eventable.nil? ? 'nil' : "#{eventable.class.name}/#{eventable.id}" = "Warning: #{self.class.name}#add_event: unable to add event #{who}/#{did}/#{what}" Rails.logger.warn { } nil end |
#prepend_log_exception(exception, key:, details: {}) ⇒ Object (private)
override in subclasses if needed
70 71 72 73 74 75 76 |
# File 'lib/bp3/noticed/prepend_perform.rb', line 70 def prepend_log_exception(exception, key:, details: {}) return log_exception(exception, key:, details:) if respond_to?(:log_exception, true) = "Warning: #{self.class.name}#log_exception: unable to log exception #{exception}/#{key}/#{details}" Rails.logger.warn { } nil end |
#prepend_log_info(key:, message:, details: {}) ⇒ Object (private)
override in subclasses if needed
61 62 63 64 65 66 67 |
# File 'lib/bp3/noticed/prepend_perform.rb', line 61 def prepend_log_info(key:, message:, details: {}) return log_info(key:, message:, details:) if respond_to?(:log_info, true) = "Warning: #{self.class.name}#log_info: unable to log info #{key}/#{}/#{details}" Rails.logger.warn { } nil end |
#remove_state(obj) ⇒ Object (private)
37 38 39 40 41 42 43 44 45 |
# File 'lib/bp3/noticed/prepend_perform.rb', line 37 def remove_state(obj) if obj.is_a?(Hash) obj.except(:state, 'state') elsif obj.is_a?(Array) obj.reject { |e| e.is_a?(Hash) && (e.key?(:state) || e.key?('state')) } else obj end end |