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