【问题标题】:Make Background Job generated files available for Download使后台作业生成的文件可供下载
【发布时间】:2011-12-16 07:25:00
【问题描述】:

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

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

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

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

请帮助我解决这个问题!

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 whenever


    【解决方案1】:

    我会推荐 Gems DelayedJob(Rails 3.0+ 为 2.1)或 Resque 用于创建后台作业、将它们放置在多个队列中并稍后处理它们。两者都有很好的 Railscast。

    【讨论】:

      【解决方案2】:

      您可以添加类 ReportGenerator 并在 rails runner 中使用它。此类将计算日期范围,生成报告并保存在您的应用程序的公共目录下。您必须注意到任何人都可以访问公共目录中的每个文件。如果您没有访问此文件的权限,您可以将其放在其他目录中,例如 - 非公开并使用 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
      

      【讨论】:

      • 感谢您的帮助...我没有报告模型我有一个控制器和视图。在控制器中,我定义了一个接受两个日期并在提交窗口中生成 xls 报告以供下载的方法。我怎样才能以你提到的方式把它作为背景..你能提供一些启示吗?
      • 我没有提到任何报告模型。只是一个 Ruby 类,没有 ActiveRecord,它与你的控制器动作相同,但有一个区别。您没有明确传递日期范围,而只是传递了一个季度数字。你添加类似每 3.months { runner "ReportGenerator.new(:quater => Date.today.month / 3).generate" }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2015-10-11
      • 2014-09-06
      • 2012-02-24
      • 2022-07-19
      相关资源
      最近更新 更多