Sha256: 66fffe068136c4a69d451c09ebd1df7860cd109eb5988a62477f1005c970b801
Contents?: true
Size: 1.48 KB
Versions: 1
Compression:
Stored size: 1.48 KB
Contents
module AsyncRequest class Job < ActiveRecord::Base # rubocop:disable Rails/ApplicationRecord serialize :params, Array enum status: { waiting: 0, processing: 1, processed: 2, failed: 3 } def self.create_and_enqueue(worker_class, *params) raise ArgumentError if worker_class.nil? create( worker: worker_class, params: params, status: statuses[:waiting], uid: SecureRandom.uuid ).tap { |job| JobProcessor.perform_async(job.id) } end def token @token ||= JsonWebToken.encode(id) end def successfully_processed!(response, status_code) Rails.logger.info("Processing finished successfully for job with id=#{id}") update_attributes!( status: :processed, status_code: map_status_code(status_code), response: response.to_s ) end def processing! Rails.logger.info("Processing job with id=#{id}") super end def finished? processed? || failed? end def finished_with_errors!(error) Rails.logger.info("Processing failed for job with id=#{id}") Rails.logger.info(error.message) Rails.logger.info(error.backtrace.inspect) update_attributes!(status: :failed, status_code: 500, response: { error: error.message }.to_json) end private def map_status_code(status_code) return Rack::Utils::SYMBOL_TO_STATUS_CODE[status_code] if status_code.is_a?(Symbol) status_code.to_i end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
async_request-1.0.0 | app/models/async_request/job.rb |