class ActiveJob::GoogleCloudTasks::HTTP::Rack

Public Instance Methods

call(env) click to toggle source
# File lib/active_job/google_cloud_tasks/http/rack.rb, line 10
def call(env)
  request = ::Rack::Request.new(env)
  payload = extract_payload(request)

  ActiveJob::Base.execute payload

  [200, {}, ['ok']]
rescue PayloadError => e
  [400, {}, [e.cause.message]]
rescue => e
  [500, {}, [e.message]]
end

Private Instance Methods

extract_payload(request) click to toggle source
# File lib/active_job/google_cloud_tasks/http/rack.rb, line 25
def extract_payload(request)
  JSON.parse(request.body.read).fetch('job')
rescue JSON::ParserError, KeyError
  raise PayloadError
end