class RailsCloudTasks::Adapter
Public Instance Methods
client()
click to toggle source
# File lib/rails_cloud_tasks/adapter.rb, line 25 def client @client ||= Google::Cloud::Tasks.cloud_tasks end
enqueue(job, timestamp = nil)
click to toggle source
# File lib/rails_cloud_tasks/adapter.rb, line 7 def enqueue(job, timestamp = nil) path = client.queue_path(project: project_id, location: location_id, queue: job.queue_name) task = build_task(job, timestamp) begin client.create_task(parent: path, task: task) rescue Google::Cloud::FailedPreconditionError => e raise e if e.details != 'Queue does not exist.' client.create_queue(build_queue(path)) retry end end
enqueue_at(job, timestamp)
click to toggle source
# File lib/rails_cloud_tasks/adapter.rb, line 21 def enqueue_at(job, timestamp) enqueue(job, timestamp.to_i) end
Private Instance Methods
build_queue(path)
click to toggle source
# File lib/rails_cloud_tasks/adapter.rb, line 49 def build_queue(path) { parent: path.split('/queues').first, queue: { name: path } } end
build_task(job, timestamp)
click to toggle source
# File lib/rails_cloud_tasks/adapter.rb, line 35 def build_task(job, timestamp) { http_request: { http_method: :POST, url: url, body: { job: job.serialize }.to_json.force_encoding('ASCII-8BIT'), headers: { 'Content-Type': 'application/json' } }.merge(auth), schedule_time: timestamp && Google::Protobuf::Timestamp.new.tap do |ts| ts.seconds = timestamp end }.compact end
url()
click to toggle source
# File lib/rails_cloud_tasks/adapter.rb, line 31 def url "#{host}#{tasks_path}" end