Rails 发条事件在本地被调用两次
Rails Clockwork events getting called twice locally
当我 运行 我的发条文件时,事件被注册了两次。我做错了什么吗?
CLI 我在本地 运行ning 进行测试:
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
经过大量调试后,我发现这是因为在我的 development.rb 文件中我有:
config.eager_load = true
其中,结合
require './config/boot'
require './config/environment'
运行时钟文件两次。我相信这是因为我正在预加载应用程序 (eager_load),然后使用 require 语句再次加载?
无论如何,当发条是 运行 来自我的 procfile 时 eager_load 被忽略(使用 $ heroku local 测试),所以它工作正常。
希望这对任何人都有帮助,因为我在这上面停留了一段时间!
当我 运行 我的发条文件时,事件被注册了两次。我做错了什么吗?
CLI 我在本地 运行ning 进行测试:
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
经过大量调试后,我发现这是因为在我的 development.rb 文件中我有:
config.eager_load = true
其中,结合
require './config/boot'
require './config/environment'
运行时钟文件两次。我相信这是因为我正在预加载应用程序 (eager_load),然后使用 require 语句再次加载?
无论如何,当发条是 运行 来自我的 procfile 时 eager_load 被忽略(使用 $ heroku local 测试),所以它工作正常。
希望这对任何人都有帮助,因为我在这上面停留了一段时间!