可以访问ActiveRecord的Rails的后台进程?

时间:2014-01-02 23:17:36

标签: ruby-on-rails ruby activerecord cron

我打算为Rails应用程序编写一个脚本,该应用程序将持续运行并需要访问ActiveRecord实例。

我已经研究过Sidekiq和Resque,但我不太确定哪种工具最适合这项工作(访问ActiveRecord并在主应用程序中异步地在后台运行)。

此外,在阅读了关于Sidekiq / Resque之后,我相信这两个解决方案可能对我想做的事情来说太重了(向ActiveRecord添加一些数据)。

有人有这方面的经验吗?

任何帮助或提示将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

我定义了一个运行rufus预定作业的类,我使用rake任务运行此类,然后使用foreman在Procfile中定义作业,并导出到upstart(http://michael.vanrooijen.io/articles/2011/06/08-managing-and-monitoring-your-ruby-application-with-foreman-and-upstart/

class XXXX
  def initialize
    @scheduler = Rufus::Scheduler.start_new
  end

  def run

    @scheduler.every '120s' do
      #run code
    end


    @scheduler.join


  end
end


task :rake_task => :environment do
  require "class file path"
  obj = XXXX.new
  obj.run

end

在Procfile中

background_jobs:      rake rake_task