Clockwork 对 ActiveJob 后台作业进行排队

ome*_*cat 5 ruby-on-rails clockwork rails-activejob

运行 Rails 4.2.0,因此我使用 ActiveJob w/ Sidekiq 后端。我需要调用定期安排的后台作业,因此我希望使用 Clockwork,但我还没有看到任何有关如何将其与 ActiveJob 一起使用的示例。

这是我的 lib/clock.rb,基于 Clockwork Github 示例:

require 'activejob'
module Clockwork
  handler do |job, time|
    puts "Running #{job}, at #{time}"
    ProductUpdateJob.perform_later
  end

  every(30.seconds, 'ProductUpdateJob.perform_later')

end
Run Code Online (Sandbox Code Playgroud)

更新:

我能够让它适合我的情况,但我对这个解决方案并不完全满意,因为我必须加载整个环境。我只想运行 ActiveJobs 所需的最低限度。

require 'activejob'
module Clockwork
  handler do |job, time|
    puts "Running #{job}, at #{time}"
    ProductUpdateJob.perform_later
  end

  every(30.seconds, 'ProductUpdateJob.perform_later')

end
Run Code Online (Sandbox Code Playgroud)

ome*_*cat 3

这是一个工作版本

require 'clockwork'
require './config/boot'
require './config/environment'

module Clockwork
  handler do |job, time|
    puts "Running #{job}, at #{time}"
    "#{job}".constantize.perform_async
  end

  every(10.seconds, 'ProductUpdateJob') 

end
Run Code Online (Sandbox Code Playgroud)