我可以在启动rails服务器时启动一个线程

时间:2014-08-05 18:45:45

标签: ruby-on-rails ruby multithreading ruby-on-rails-3 ruby-on-rails-4

我是rails的新手,我需要在rails中运行一个任务,这意味着有一个功能,需要在5分钟的时间间隔内调用?因为我正在使用原型,并且它在heroku上运行,所以我无法使用heroku运行任何付费插件,同时我读到,heroku有一个调度程序,它是免费的,但是只能以10分钟的间隔运行时间。所以我在想,为这个原型项目运行一个线程,即

这里编写一个线程,需要在睡眠5分钟后调用一个函数?还有如何在启动rails服务器时运行该线程?我可以通过proc文件启动该线程和服务器吗?这是正确的方法吗?

def test

end
t = Thread.new do
  while true do
  sleep 60
    test()       
  end
end
t.join

1 个答案:

答案 0 :(得分:0)

在我看来,你应该使用像whenever

这样的一些cronjob gem

此gem将在config/schedule.rb中创建一个文件。使用此文件,您可以调用任何rake任务,运行命令,甚至可以调用类的方法。

例如:

every 10.minutes do
   # run rake task or call some class's method
end

但如果你坚持不使用cronjob相关的宝石,那么你应该使用像foreman这样的宝石

它易于使用。您可以从this blogthis railscast

了解相关信息

修改

SO question可能对您有所帮助......

最新编辑:

是的,可以看到here。它建议使用this add-ons并且它是免费的:)