如何安排函数在将来执行?

我有一个rails应用程序,用户在其中创建一个名为rooster的记录,其名为“on”的布尔值设置为true。 在rails控制台中,它看起来像:

Rooster => Rooster{:id integer, :user_id integer, :created_at datetime, :updated_at datetime, :on boolean} 

现在,经过一段时间(比方说,10个小时),我需要应用程序自动将布尔值翻转为“假”(用户不做任何事情)。

非常简单的想法。 那么,如何在rails 3中创建一个经过一段时间后执行的方法?

使用DelayedJob,你可以做类似的事情

  def in_the_future # Some other code end handle_asynchronously :in_the_future, :run_at => Proc.new { 10.hours.from_now } 

非常好? :)我建议你阅读jared链接的文档

您需要查看DelayedJob或Resque 。

看看SimpleWorker,这是一个基于云的后台处理/工作队列,用于Ruby应用程序。

旨在卸载前端任务(发送电子邮件,发布到Twitter),运行预定作业或扩展一堆并行作业(网络爬行,ruby hadoop等)。 非常适合这种类型的使用。

这些作业在云中运行,因此您不仅可以从应用服务器卸载任务,还可以获得在顶级云基础架构上运行的可靠性(该服务使用持久性数据存储和消息队列在AWS上运行)。

(披露:我为公司工作。)