在系统引导时启动后台Rails进程

时间:2015-11-20 23:55:47

标签: ruby-on-rails rails-activerecord daemon background-process

我希望有一个始终运行的后台进程,最好在服务器启动时启动。此过程将负责定期轮询网络设备并将结果保存在Active Record中以供Rails应用程序访问,因此根据我的理解,它需要成为rails应用程序的一部分(以便它可以访问Active Record )

在rails中,如何在服务器启动时指定某些内容应该开始运行?如果我使用 https://github.com/thuehlinger/daemons 并在我的服务器启动时使用ruby myserver_control.rb start调用我的进程,该进程是否可以访问Active Record?

1 个答案:

答案 0 :(得分:1)

您可以使用clockwork gem定期运行作业。

示例lib / clock.rb,您在其中安排作业

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