我是在控制器中做到的:
MyTestJob.perform_later
调用它时,会在我的rails控制台中显示:
[ActiveJob] Enqueued MyTestJob (Job ID: e7af2684-4dc4-4a1f-bac7-b189dddb6f2f) to DelayedJob(default)
[ActiveJob] (0.4ms) BEGIN
[ActiveJob] SQL (0.6ms) INSERT INTO "public"."delayed_jobs" ("queue", "handler", "run_at", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["queue", "default"], ["handler", "--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n job_class: GenerateCouponcodesJob\n job_id: e7af2684-4dc4-4a1f-bac7-b189dddb6f2f\n queue_name: default\n arguments: []\n"], ["run_at", "2015-10-28 09:58:17.891850"], ["created_at", "2015-10-28 09:58:17.892095"], ["updated_at", "2015-10-28 09:58:17.892095"]]
[ActiveJob] (11.0ms) COMMIT
Rendered campaign/test.html.erb within layouts/application (0.1ms)
Completed 200 OK in 254ms (Views: 233.6ms | ActiveRecord: 12.0ms)
所以上面的日志表明工作已经被证实(这证明了我的工作人员工作正常),但它没有被执行, 这是我的工作:
class MyTestJob < ActiveJob::Base
queue_as :default
def perform(*args)
directory = Rails.root
File.open(File.join(directory, 'file.txt'), 'w') do |f|
f.puts "contents"
end
Delayed::Worker.logger.debug("Log Entry")
end
end
没有创建文件,也没有在delayed_job.log中创建日志。 我已经做了一切正确但仍然没有错误......
答案 0 :(得分:1)
上面的日志说工作已经入队(证明我的工作人员工作正常)
不。这意味着“enqueuer”工作正常。对工人一无所知。
它应该作为一个单独的过程运行。
bundle exec rake jobs:work