class RailsCloudTasks::Rack::Tasks
Public Class Methods
call(env)
click to toggle source
# File lib/rails_cloud_tasks/rack/tasks.rb, line 8 def call(env) request = ::Rack::Request.new(env) job = extract_job(request) RailsCloudTasks::Instrumentation.transaction_name!( "RailsCloudTasks/#{job['job_class']}/perform_now" ) ActiveJob::Base.execute(job) response(200, {}) rescue Rack::InvalidPayloadError => e response(400, { error: e.cause.message }) end
Private Class Methods
extract_job(request)
click to toggle source
# File lib/rails_cloud_tasks/rack/tasks.rb, line 24 def extract_job(request) body = request.body.read JSON.parse(body).fetch('job') rescue JSON::ParserError, KeyError raise Rack::InvalidPayloadError end
response(status, body)
click to toggle source
# File lib/rails_cloud_tasks/rack/tasks.rb, line 31 def response(status, body) [status, { 'Content-Type' => 'application/json' }, [body.to_json]] end