class Activejob::GoogleCloudTasks::Adapter

Public Class Methods

new(project:, location:, cloud_tasks_client: Google::Cloud::Tasks.new(version: :v2beta3)) click to toggle source
# File lib/activejob/google_cloud_tasks/adapter.rb, line 8
def initialize(project:, location:, cloud_tasks_client: Google::Cloud::Tasks.new(version: :v2beta3))
  @project = project
  @location = location
  @cloud_tasks_client = cloud_tasks_client
end

Public Instance Methods

enqueue(job, attributes = {}) click to toggle source
# File lib/activejob/google_cloud_tasks/adapter.rb, line 14
def enqueue(job, attributes = {})
  formatted_parent = Google::Cloud::Tasks::V2beta3::CloudTasksClient.queue_path(@project, @location, job.queue_name)
  relative_uri = "#{Activejob::GoogleCloudTasks::Config.path}/perform?job=#{job.class.to_s}&#{job.arguments.to_param}"

  task = {
    app_engine_http_request: {
      http_method: :GET,
      relative_uri: relative_uri
    }
  }
  task[:schedule_time] = Google::Protobuf::Timestamp.new(seconds: attributes[:scheduled_at].to_i) if attributes.has_key?(:scheduled_at)
  @cloud_tasks_client.create_task(formatted_parent, task)
end
enqueue_at(job, scheduled_at) click to toggle source
# File lib/activejob/google_cloud_tasks/adapter.rb, line 28
def enqueue_at(job, scheduled_at)
  enqueue job, scheduled_at: scheduled_at
end