2011-05-07 147 views
0

这是我的场景:我有一些数据进入串口。我想继续收集这些数据并存储在数据库中。然后,Rails应用程序使用数据库中的这些数据,并显示一些统计信息,如图形和内容。Ruby on Rails:继续在后台采集数据并存储在数据库中

所以我的问题是如何继续收集这个数据在一个单独的线程从rails应用程序,而其余的东西像数据库上的任何其他轨道应用程序一样工作。

如果有更好的方法来做到这一点,请咨询。

PS:我没有从串口读取任何问题。这是关于在单独的线程中从rails应用程序执行此任务的。

回答

1

使用delayed_job宝石。

delayed_job的(或DJ)封装在 后台异步 执行更长的任务 共用图案。

+0

我很困惑。你能否请详细解释一下这将如何帮助我的案子? – Shaunak 2011-05-07 09:32:22

+0

你可以观看关于这颗宝石的railscast - http://railscasts.com/episodes/171-delayed-job或文本版本 - http://asciicasts.com/episodes/171-delayed-job – 2011-05-07 09:52:10

+0

好吧!我刚刚看到了这个电视广播,看起来就像我需要的那样。但我有几个问题。 railcast中的send_later方法正在以控制器的特定方法调用。我希望我的任务能够在铁路应用程序启动后立即开始(服务器启动)。另外,我正在运行的作业没有与任何控制器的连接,所以我应该在哪里添加使用send_later调用的方法?最后我的工作无限期地运行,这对这种安排有什么影响? – Shaunak 2011-05-07 10:06:43

1

你可以检查出的另一件事是GitHub上公布的resque gem,它使用Redis的作为工作队列,并有一个非常方便的Web界面,这有助于控制工作线程。这与延迟工作非常相似,但可能更好地满足您的需求。

相关问题