Class: RailsErrorDashboard::CloseLinkedIssueJob
- Inherits:
-
ApplicationJob
- Object
- ActiveJob::Base
- ApplicationJob
- RailsErrorDashboard::CloseLinkedIssueJob
- Defined in:
- app/jobs/rails_error_dashboard/close_linked_issue_job.rb
Overview
Background job to close a linked issue when an error is resolved.
Triggered via :on_error_resolved plugin hook. Adds a comment before closing: “Resolved in Rails Error Dashboard by name”
Instance Method Summary collapse
Instance Method Details
#perform(error_log_id) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/jobs/rails_error_dashboard/close_linked_issue_job.rb', line 14 def perform(error_log_id) error = ErrorLog.find(error_log_id) return unless error.external_issue_url.present? && error.external_issue_number.present? client = Services::IssueTrackerClient.from_config return unless client # Add resolution comment resolved_by = error.resolved_by_name.presence || "a team member" comment = "**Resolved** by #{resolved_by}." comment += "\n\nResolution: #{error.resolution_comment}" if error.resolution_comment.present? comment += "\n\n---\n*[RED](https://github.com/AnjanJ/rails_error_dashboard) (Rails Error Dashboard)*" client.add_comment(number: error.external_issue_number, body: comment) # Close the issue result = client.close_issue(number: error.external_issue_number) if result[:success] Rails.logger.info("[RailsErrorDashboard] Closed issue ##{error.external_issue_number} for error #{error_log_id}") else Rails.logger.error("[RailsErrorDashboard] Failed to close issue ##{error.external_issue_number}: #{result[:error]}") end rescue ActiveRecord::RecordNotFound # Error was deleted rescue => e Rails.logger.error("[RailsErrorDashboard] CloseLinkedIssueJob failed: #{e.class}: #{e.}") raise # retry end |