我有一个rails应用程序,用户在其中创建一个名为rooster的记录,其名为“on”的布尔值设置为true。在rails控制台中,它看起来像:
Rooster
=> Rooster{:id integer, :user_id integer, :created_at datetime, :updated_at datetime, :on boolean}
现在,经过一段时间(比方说,10个小时),我需要应用程序自动将该布尔值翻转为“false”(用户不做任何事情)。
非常简单的想法。那么,如何在rails 3中创建一个在经过一段时间后执行的方法?
答案 0 :(得分:2)
您需要查看DelayedJob或Resque。
答案 1 :(得分:1)
使用DelayedJob,您可以执行类似
的操作 def in_the_future
# Some other code
end
handle_asynchronously :in_the_future, :run_at => Proc.new { 10.hours.from_now }
非常好吗? :)我建议你阅读jared链接的文档
答案 2 :(得分:1)
查看SimpleWorker,这是一个基于云的后台处理/工作队列,用于Ruby应用程序。
旨在卸载前端任务(发送电子邮件,发布到Twitter),运行预定作业或扩展大量并行作业(网络爬行,ruby hadoop等)。非常适合这种用途。
作业在云中运行,因此您不仅可以从应用服务器卸载任务,还可以获得在顶级云基础架构上运行的可靠性(该服务使用持久性数据存储和消息队列在AWS上运行)。
(披露:我为公司工作。)