app/workers/comment_worker.rb (24 lines of code) (raw):

class CommentWorker include Sidekiq::Worker sidekiq_options queue: :comments, lock: :until_and_while_executing def perform(comment_id, user_id, subject_id) comment = Comment.find_by_id(comment_id) user = User.find_by_id(user_id) subject = Subject.find_by_id(subject_id) if comment && user && subject && subject.commentable? begin subject.comment_on_github(comment, user) rescue Octokit::NotFound, Octokit::Unauthorized, Octokit::Forbidden comment.try(:destroy) rescue Faraday::Error => exception handle_exception(exception, user) end else comment.try(:destroy) end end private def handle_exception(exception, user) logger.error("[ERROR] CommentWorkerJob#perform #{user.github_login} - #{exception.class}: #{exception.message}") end end