每当有宝石时调用活动作业

时间:2019-06-04 11:49:53

标签: ruby-on-rails ruby cron whenever rails-activejob

这是一份积极的工作:

# app/jobs/upload_evidence_job.rb

class UploadEvidenceJob < ApplicationJob
  queue_as :default

  def perform(*args)
    UploadRequest.pull_messages
    ...
  end
end

这是我随时使用的配置文件:

set :output, "log/cron_log.log"
env :PATH, ENV['PATH']

every 1.minutes do
  runner 'UploadEvidenceJob.perform_later'
end

我正在运行以下命令以用cron编写,效果很好。

$ whenever --update-crontab --set environment=development

问题是该工作没有从cron调用,而在Rails控制台中工作。

我认为在执行cron时不会加载活动作业,我是否需要require将其挂载在某个地方?

1 个答案:

答案 0 :(得分:1)

首先请确保cron运行程序完全正常工作-在cron环境中有所不同,因为没有shell会话。例如,如果您使用的是RVM,则需要使用ruby binstubs,并且可能是bundle命令的完整路径。 然后尝试手动运行所生成的cron命令(对于您在下面运行的用户,请参见crontab -l

每分钟也要旋转铁轨只是为了排队工作-并不是很理想,您可以使用sidekiq-scheduler(如果使用的是sidekiq)或其他ruby调度程序来完成