2017-12-01 3 views
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] 

successerrorfailureコールバックが呼び出されない理由:rake my_first_delayed_job_job

rakeタスクを実行した後、私はこれがログに記録がありますか?

答えて

1

あなたはこのような新しい仕事の作成:active-jobための正しい

MyFirstDelayedJobJob.set(wait: 30.seconds).perform_later 'arg1', 'arg2', 333 

あなたのバリアントを。しかし、delayed_job gemはperform_laterの代わりに、ジョブを実行するためにdelayメソッドを追加するため、使用する必要があります。次のようにコードを書き直してください:

# lib/tasks/run_my_first_delayed_job.rake 
MyFirstDelayedJobJob.new.delay(run_at: 30.seconds.from_now).perform 'arg1', 'arg2', 333 
+0

それは魅力的です! –

関連する問題