Ruby on rails 时钟工作在rails中几分钟后重新启动作业
我使用时钟工作者宝石为后台进程 我有一个包含键和值的配置表 我的clock.rb文件 运行worker时:config/clock.rb 这很好,但当我从配置更改时间时, 如果不重新启动时钟工作者文件,工作者将如何工作?我可以想到:Ruby on rails 时钟工作在rails中几分钟后重新启动作业,ruby-on-rails,ruby,ruby-on-rails-5,clockwork,Ruby On Rails,Ruby,Ruby On Rails 5,Clockwork,我使用时钟工作者宝石为后台进程 我有一个包含键和值的配置表 我的clock.rb文件 运行worker时:config/clock.rb 这很好,但当我从配置更改时间时, 如果不重新启动时钟工作者文件,工作者将如何工作?我可以想到: module Clockwork GET_TIME = -> { Configuration.find_by(key: "time") } SETTINGS = { time: GET_TIME.() } every(1.minutes, 'res
module Clockwork
GET_TIME = -> { Configuration.find_by(key: "time") }
SETTINGS = { time: GET_TIME.() }
every(1.minutes, 'reset settings') do
Clockwork::SETTINGS[:time] = Clockwork::GET_TIME.()
end
handler do |job|
puts "Running #{job}"
end
if SETTINGS[:time].present?
min = SETTINGS[:time].value.to_i
every(min.minutes, 'calculate user details') do
User.calculate_time
end
end
end
这意味着
Configuration
缓存配置。您应该找到一种方法来强制它重新加载配置。
module Clockwork
GET_TIME = -> { Configuration.find_by(key: "time") }
SETTINGS = { time: GET_TIME.() }
every(1.minutes, 'reset settings') do
Clockwork::SETTINGS[:time] = Clockwork::GET_TIME.()
end
handler do |job|
puts "Running #{job}"
end
if SETTINGS[:time].present?
min = SETTINGS[:time].value.to_i
every(min.minutes, 'calculate user details') do
User.calculate_time
end
end
end