小编use*_*535的帖子

控制器对延迟工作的行动

我正在上传制表符分隔的文档并在控制器中处理.一切正常,但可能需要一些时间在一个大文件上.我想把它移到delay_job,我在我的应用程序的其他地方工作,但由于这是在控制器中,不能以相同的方式调用.

表单调用process_file操作,该操作又调用salesupload操作.我应该如何将其转变为后台工作?

class SalesController < ApplicationController

  def salesupload(file)
    uploaded_io = file.read
    numrows = "uploaded_io.size"
    FasterCSV.parse(uploaded_io, {:headers => true, :col_sep =>"\t"}).each do |row_data|
        full, upc, _discard, isrc = row_data[26].match(/^([^_]+)(_(.+))?/).to_a
          new_record = AppleSale.new(
              'provider' =>  row_data[0],
              'provider_country' => row_data[1],
              'vendor_identifier' => row_data[2]
          )
      new_record.save
    end
  end

    def process_file
        file = params[:apple_sale][:tsv_file]
        salesupload(file)
    end

end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails background-process ruby-on-rails-3

7
推荐指数
1
解决办法
4454
查看次数

Ruby Spreadsheet没有打开远程文件

我正在尝试使用Ruby Spreadsheet gem打开远程存储的电子表格.我的代码如下

require 'spreadsheet'
require 'open-uri'

book = Spreadsheet.open(url)
Run Code Online (Sandbox Code Playgroud)

它给我一个错误的Errno :: ENOENT:没有这样的文件或目录

通过将URL放入浏览器,它下载得很好,所以我知道网址很好.我有一些非常相似的代码使用FasterCSV工作得很好,所以如果这是一个Spreadsheet的问题,或者我做错了什么,徘徊.

ruby ruby-on-rails spreadsheet

3
推荐指数
1
解决办法
925
查看次数