2

我的控制器中有一个操作,它根据所选日期范围(开始和结束日期)生成网站使用报告,条件是开始和结束日期必须在当前季度内。

我想实现一个background job将在每个季度末生成此报告并使其作为查看页面上的链接可供下载的工具。

每个季度是 3 个月,例如 - On March 31st 11:59 PM,我希望它生成从 1 月 1 日到 3 月 31 日的网站使用情况报告,并使其在查看页面中可供下载。

如果可能的话,我更喜欢使用whenever gem它,因为我已经在使用它以一定的时间间隔重新索引模型。欢迎所有可能的建议!

请帮我解决这个问题!

4

2 回答 2

2

我建议使用 Gems DelayedJob(Rails 3.0+ 为 2.1)或Resque来创建后台作业,将它们放置在多个队列中,然后再进行处理。两者都有很好的 Railscasts。

于 2011-12-16T09:24:44.543 回答
1

您可以添加类 ReportGenerator 并在 rails runner 中使用它。此类将计算日期范围,生成报告并保存在您的应用程序的公共目录下。您必须注意到任何人都可以访问公共目录中的每个文件。如果您没有访问此文件的权限,您可以将其放入其他目录,例如 - unpublic 并使用 Apache 的 X-Sendfile http 标头通过您的应用程序(身份验证目的)提供它。

ReportGenerator.new(:quater => 4).generate

为了识别你有哪个季度:

quaters => {
  1 => "definition of 1st quater (date ranges)",
  2 => "definition of 2nd quater (date ranges)",
  3 => "definition of 3rd quater (date ranges)",
  4 => "definition of 4th quater (date ranges)".
}
quater = Date.today.month / 3
于 2011-12-16T08:53:53.730 回答