2012-01-09 18 views
3

ユーザーはすべてのデータをCSV形式でダウンロードすることができますが、多くのユーザー(データが多いユーザー)にとっては、CSVファイルをバックグラウンドで生成してから、後でダウンロードするリンク。バックグラウンドタスクでCSVファイルを生成する方法は?

私はビューのフライでCSVファイルを生成する方法を知っていますが、私はバックグラウンドタスクでそれを生成する最良の方法について完全に明確ではありません。

私は現在、ビュー内でCSVファイルを生成するためにcsv_builderを使用しています...それでも、それを使用して、何らかの形でそれを直接CSVファイルに出力してから、S3にアップロードできますクリップを使用して...しかし、それはあまりにも遠くに取り込まれる可能性があります。

+0

backgroundrbが役立ちます。それらは、バックグラウンドでいくつかのタスクを実行する方法のステップを記述しています。 cronを使用して必要なときに(それを生成できるビューで使用する前に)実行するように自動化することができます。 –

+0

私はバックグラウンドタスクを実行する方法を知っています。バックグラウンドタスクを使用してCSVファイルを生成する方法と、 'csv_builder'を使い続けることができるかどうかを尋ねています – Shpigford

答えて

5

私は同様の問題を抱えていましたが、csv_builder(これは私には分かりません)ではなく、内蔵のレールCSVライブラリを使用しました。

def csv_export 
    @entries = self.entries  
    @filename = "naming my file"  
    CSV.open("#{Rails.root.to_s}/tmp/#{@filename}", "wb") do |csv| #creates a tempfile csv 
    csv << ["Date & Time", "Name", "Email"] #creates the header 
    @entries.each do |e|    
     csv << [e.created_at, e.name, e.email] #create new line for each item in collection 
    end 
end 

self.update_attribute(:csv_report, File.open("#{Rails.root.to_s}/tmp/#{@filename}")) 
    #saves tempfile as paperclip attachment 
end 

私が遅れた仕事の作業者にオフロードするrakeタスクでこのメソッドを呼び出す:私のモデルで

私はcsvファイルを生成し、S3上などpaerclip添付ファイルを保存するための方法を持っています。

レーキタスクの場合:Object.delay.csv_export

関連する問題