タブ区切りのドキュメントをアップロードし、コントローラーで処理しています。すべて正常に動作しますが、大きなファイルでは時間がかかる場合があります。これをアプリの他の場所で作業している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