Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3.2后台任务_Ruby On Rails_Heroku_Background_Delayed Job - Fatal编程技术网

Ruby on rails Rails 3.2后台任务

Ruby on rails Rails 3.2后台任务,ruby-on-rails,heroku,background,delayed-job,Ruby On Rails,Heroku,Background,Delayed Job,我在Heroku上运行Rails 3.2,并使用Delayed\u job管理后台任务 该应用程序生成一个CSV,通过浏览器下载给请求者。但是,该文件非常庞大,需要30秒才能生成 我的控制器如下所示: def index @unpaginated = @search.result.order("created_at DESC") # load all matching records respond_to do |format| format.csv { render

我在Heroku上运行Rails 3.2,并使用Delayed\u job管理后台任务

该应用程序生成一个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

我该如何将这样的工作转移到后台工作中?

我会这样做:

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
  • 为文件生成创建后台作业
  • 重定向到等待后台作业完成并定期刷新的等待页面
  • 后台作业完成后,重定向到文件的url

  • 步骤2.5可以选择将生成的文件上载到amazon s3,这使步骤3更容易。

    在线教程很多。先试试看。如果您有特定的问题,请返回并在此处发布。您可以使用带有延迟方法的send_file,而不是respond_to