我希望有一个始终运行的后台进程,最好在服务器启动时启动。此过程将负责定期轮询网络设备并将结果保存在Active Record中以供Rails应用程序访问,因此根据我的理解,它需要成为rails应用程序的一部分(以便它可以访问Active Record )
在rails中,如何在服务器启动时指定某些内容应该开始运行?如果我使用 https://github.com/thuehlinger/daemons 并在我的服务器启动时使用ruby myserver_control.rb start
调用我的进程,该进程是否可以访问Active Record?
答案 0 :(得分:1)
您可以使用clockwork gem定期运行作业。
require 'rake'
require 'clockwork'
require File.expand_path('../../config/boot', __FILE__)
require File.expand_path('../../config/environment', __FILE__)
module Clockwork
configure do |config|
config[:sleep_timeout] = 60
end
every(10.minutes, 'inbox:process_all') do
`rake inbox:process_all`
end
every(1.day, 'email:send_daily_summary', at: '00:00') do
`rake email:send_daily_summary`
end
end