我有一个运行40分钟的Ruby脚本,如何将其集成到Rails应用程序中?

mar*_*ion 2 ruby ruby-on-rails

我有一个抓取网站的Ruby脚本,需要40分钟.我想做的是将结果转储到数据库中,并能够对ActiveRecord数据进行常规处理.

  1. 如果我把它放在一个Rails应用程序中,并有一个启动脚本的"开始"按钮,它会超时吗?
  2. 理想情况下,我希望脚本每天至少运行一次 - 并更新数据库 - 所以我最好的选择是创建一个rake任务,还是有其他方法可以做到这一点?
  3. 如果我将它包装在Rails应用程序中,我应该在哪个文件夹中放置脚本以及接近它的最佳方法是什么?我不能把它放在模型文件中 - 因为这没有任何意义.
  4. 我之前从未做过任何"工作"类型的处理,但这听起来可能属于该范围.这样做时我还应该考虑其他什么?

编辑1:

另一个问题是,如果我将这个特定的Ruby脚本放在我的/lib目录中,我该如何让它与数据库进行交互?我通常与模型和控制器中的DB进行交互.如何在运行后将结果存储在我的数据库中?

Kev*_*erg 6

我会试着给你一些直截了当的答案.

A)你很可能将它作为后台工作.有一些体面的宝石.请考虑https://github.com/defunkt/resque或更轻量级的内容,例如https://github.com/tobi/delayed_job.

B)rake任务就足够了,然后用任何一个提到的库运行它.另一种选择是cron工作.

C)你应该把它放在lib /目录中.

D)您应始终提供某种处理日志,以便跟踪潜在的错误.如果您选择上述两个库中的任何一个,请务必正确阅读说明.