1
私は私のプロジェクトにdelayed_job -gem含ま:perform-methodは動作しますが、他のdelayed_jobのイベントが呼び出されないのはなぜですか?
# Gemfile
gem 'daemons'
gem 'delayed_job_active_record'
# bash
bundle
rails generate delayed_job:active_record
rake db:migrate
rails g job MyFirstDelayedJob
をそして、このようなapp/jobs/my_first_delayed_job_job.rb
ファイルに編集:
class MyFirstDelayedJobJob < ApplicationJob
queue_as :default
def perform(*args)
JOB_LOGGER.info "perform() happened with args: #{args.inspect}"
end
def success(job)
JOB_LOGGER.info "success() happened. Job object: #{job.inspect}"
end
def error(job, ex)
JOB_LOGGER.info "error() happened. Job object: #{job.inspect}, Exception: #{ex.message}"
end
def failure(job)
JOB_LOGGER.info "failure() happened. Job object: #{job.inspect}"
end
end
は、デバッグログを確認するために、レールコンソールからdelayed_jobワーカーを開始:
Delayed::Worker.new.start
作成されたレーキタスク:
# lib/tasks/run_my_first_delayed_job.rake
desc 'Run job'
task my_first_delayed_job_job: :environment do
JOB_LOGGER.info 'run_my_first_delayed_job.rake: Starting delayed job...'
MyFirstDelayedJobJob.set(wait: 30.seconds).perform_later 'arg1', 'arg2', 333
JOB_LOGGER.info 'run_my_first_delayed_job.rake: Finished.'
end
そしてシェルで実行:
# log/job.log
I, [2017-12-01T19:18:14.591918 #11664] INFO -- : run_my_first_delayed_job.rake: Starting delayed job...
I, [2017-12-01T19:18:14.655178 #11664] INFO -- : run_my_first_delayed_job.rake: Finished.
I, [2017-12-01T19:18:44.785494 #11591] INFO -- : perform() happened with args: ["arg1", "arg2", 333]
success
、error
、failure
コールバックが呼び出されない理由:rake my_first_delayed_job_job
rakeタスクを実行した後、私はこれがログに記録がありますか?
それは魅力的です! –