Github CI Maintainability Test Coverage ruby

Rails Cloud Tasks

APIs

The following APIs must be enabled in your project(s):

Setup

As an application (when contributing)

  • Install packages:
  bundle install

As a package (when inside another application)

  • Add the gem to application's Gemfile:

    gem 'rails-cloud-tasks'
    
  • Add an initializer:

    # ./config/initializers/rails_cloud_tasks.rb
    

require 'rails-cloud-tasks'

RailsCloudTasks.configure do |config| config.service_account_email = '[email protected]' config.project_id = 'my-gcp-project' # This is not needed if running on GCE config.location_id = 'us-central1' config.scheduler_file_path = './custom_path/scheduler_jobs.yml' config.scheduler_prefix_name = 'my-app-name'

# Base url used by Cloud Tasks to reach your application and run the tasks config.host = 'https://myapplication.host.com' config.tasks_path = '/v2/tasks' # default: '/tasks'

# Inject routes into application config.inject_routes end


Check out the available configs and its usage description:

| attribute                 | description                                                                                                   | env support           | app engine fallback   | default value             |
|-----------------------    |-------------------------------------------------------------------------------------------------------------  |---------------------  |--------------------   |-------------------------- |
|      | The app service  email. It''s used to impersonate an user on schedule job                              |    | 
  • Add a Job class: ```ruby # ./app/jobs/application_job.rb

class ApplicationJob < ActiveJob::Base queue_as 'my-default-queue' end

./app/jobs/my_first_job.rb

class MyFirstJob < ApplicationJob # Here you may override the queue, if needed queue_as 'some-other-queue'

def perform(attrs) # Execute stuff end end


- Enqueue a job:
```ruby
MyJob.perform_later(attrs)

Scheduled Jobs

We have support to Google Cloud Schedule. It's based on Cloud tasks, the jobs are scheduled with HTTP Target. We do not support Pub/Sub or App Engine HTTP for now.

Check out the follow sample of config file:

# config/scheduler.yml
- name: UsersSyncJob
  schedule: 0 8 * * *
  description: Sync user data
  time_zone: "America/Los_Angeles"
  class_name: Users::SyncJob
  args:
    - this_first: argument
      is_a: hash
    - - this second argument
      - is an array
    - this third argument is a string
attribute description required
name Any descriptive name, following Tasks naming restrictions
schedule The frequency to run your job. It should be a unix-cron format
description What this job does
time_zone Choose which one timezone your job must run
args Arguments to the job execution. Important: if present, this must be an array of items. Check out the example above 𐄂
class_name The Job class name (including namespace)

Tests

To run tests:

bundle exec rspec

Version

Use Semantic versioning.