icps

notes

Jobs

1
2
#Gemfile
gem 'delayed_job_active_record'  

rails generate delayed_job:active_record
table.integer :attempts, default: 3,
rake db:migrate

1
2
3
#config/application.rb
config.active_job.queue_adapter = :delayed_job
config.eager_load_paths << Rails.root.join('app/jobs')

rails g job OrderAdd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class OrderAddJob < ApplicationJob
    queue_as :urgent
    #queue_as :default
    #queue_as :low_priority

    def perform(order, customer, user)
        
    end
end

class OrdersController < ApplicationController
def create
    OrderAddJob.set(wait: 5.seconds).perform_later(@order, customer, current_user)
    OrderAddJob.set(wait_until: Date.tomorrow.noon).perform_later(@order, customer, current_user)
end
1
2
#config/initializers/delayed_job_config.rb
Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log'))

touch log/delayed_job.log

1
2
#Gemfile
gem 'daemons'

bin/delayed_job start

with heroku

https://devcenter.heroku.com/articles/delayed-job

1
2
#Procfile
worker: rake jobs:work
debog

heroku ps
heroku ps:scale worker=1
Delayed::Job.destroy_all