class RailsCloudTasks::Configuration

Attributes

app_engine[R]
google_auth[R]
host[RW]
location_id[RW]
project_id[W]
scheduler_file_path[RW]
scheduler_prefix_name[RW]
service_account_email[RW]
tasks_path[RW]

Public Class Methods

new(app_engine = AppEngine, google_auth = Google::Auth) click to toggle source
# File lib/rails_cloud_tasks/configuration.rb, line 9
def initialize(app_engine = AppEngine, google_auth = Google::Auth)
  @service_account_email = ENV['GCP_SERVICE_ACCOUNT']
  @location_id = ENV['GCP_LOCATION']
  @project_id = ENV['GCP_PROJECT']
  @host = ENV['GCP_APP_ENDPOINT']
  @tasks_path = '/tasks'
  @scheduler_file_path = './config/scheduler.yml'
  @scheduler_prefix_name = 'rails-cloud'

  @app_engine = app_engine
  @google_auth = google_auth
end

Public Instance Methods

auth() click to toggle source
# File lib/rails_cloud_tasks/configuration.rb, line 35
def auth
  @auth ||= authenticate
end
inject_routes() click to toggle source
# File lib/rails_cloud_tasks/configuration.rb, line 22
def inject_routes
  tasks_path = @tasks_path

  Rails.application.routes.append do
    post "#{tasks_path}/:job_class", to: RailsCloudTasks::Rack::Jobs
    post tasks_path, to: RailsCloudTasks::Rack::Tasks
  end
end
project_id() click to toggle source
# File lib/rails_cloud_tasks/configuration.rb, line 31
def project_id
  @project_id ||= app_engine.project_id
end

Private Instance Methods

authenticate() click to toggle source
# File lib/rails_cloud_tasks/configuration.rb, line 41
def authenticate
  email = service_account_email ||
          app_engine.service_account_email ||
          google_auth.get_application_default.issuer

  {
    oidc_token: {
      service_account_email: email
    }
  }
end