被激活后工作延迟,铁路

时间:2015-10-28 10:05:27

标签: ruby-on-rails

我是在控制器中做到的:

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中创建日志。 我已经做了一切正确但仍然没有错误......

1 个答案:

答案 0 :(得分:1)

  

上面的日志说工作已经入队(证明我的工作人员工作正常)

不。这意味着“enqueuer”工作正常。对工人一无所知。

它应该作为一个单独的过程运行。

bundle exec rake jobs:work