Sha256: f84c41eaec9c5a80d2b2615435b0abba7576d1093ac9bddfa7cad09d7e8ff198

Contents?: true

Size: 1.33 KB

Versions: 13

Compression:

Stored size: 1.33 KB

Contents

module RailsCloudTasks
  class Configuration
    attr_accessor :location_id, :host, :tasks_path, :service_account_email, :scheduler_file_path,
                  :scheduler_prefix_name

    attr_writer :project_id
    attr_reader :app_engine, :google_auth

    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

    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

    def project_id
      @project_id ||= app_engine.project_id
    end

    def auth
      @auth ||= authenticate
    end

    private

    def authenticate
      email = service_account_email ||
              app_engine.service_account_email ||
              google_auth.get_application_default.issuer

      {
        oidc_token: {
          service_account_email: email
        }
      }
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rails-cloud-tasks-0.0.10 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.9 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.9.pre.rc lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.8 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.7 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.7.pre.rc lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.6 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.5 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.4 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.4rc2 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.4.rc1 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.3 lib/rails_cloud_tasks/configuration.rb
rails-cloud-tasks-0.0.2 lib/rails_cloud_tasks/configuration.rb