Rails Clockwork事件在本地被调用两次

问题描述 投票:0回答:1

当我运行发条文件时,事件被注册两次。我做错了吗?

CLI,我正在本地运行以进行测试:clockwork app/lib/clockwork/clock.rb

clock.rb:

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

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

  every(1.hour, 'test') do 
    puts 'RUNNING TEST'
  end
end

输出:

I, INFO -- : Starting clock for 2 events: [ test test ]
I, INFO -- : Triggering 'test'
BLOCK RUNNING TEST
I, INFO -- : Triggering 'test'
BLOCK RUNNING TEST
ruby-on-rails ruby rubygems ruby-on-rails-5 clockwork
1个回答
0
投票

经过大量调试后,我发现这是因为在我的development.rb文件中,我拥有:

config.eager_load = true

其中,结合了

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

运行时钟文件两次。我相信这是因为我正在预加载应用程序(eager_load),然后使用require语句再次加载?

无论如何,当从我的procfile运行时钟发条(使用$ heroku local测试)时,eager_load将被忽略,因此它可以正常工作。

希望这对我有所帮助的人会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.