2012-07-16 92 views
0

我在Heroku上运行Rails 3.2,我使用Delayed_job来管理后台任务。Rails 3.2后台任务

该应用产生一个通过浏览器下载到请求它的人的CSV。该文件虽然很大,但最多需要30秒才能生成。

我的控制器看起来是这样的:

def index 
    @unpaginated = @search.result.order("created_at DESC") # load all matching records 

respond_to do |format| 
     format.csv { render csv: @unpaginated, filename: 'outlets_' + Time.now.strftime("%Y_%m_%d") } 

end 

我怎么会提出这样的事到后台作业?

+0

有大量的在线教程。先尝试一下。如果您遇到特定问题,请回复并在此处发帖。 – zsquare 2012-07-16 15:03:17

+0

你可以使用send_file而不是respond_to – 2012-07-16 15:15:55

回答

0

我会做这样的事情:

  1. 创建的文件生成一个后台作业。
  2. 重定向到一个等待页面,等待后台作业完成并定期刷新
  3. 当后台作业完成时,重定向到该文件的url。

可选步骤2.5将生成的文件上传到amazon s3,这使得步骤3更容易。