2016-05-21 7 views
0

モデルの遅延ジョブメソッドでExcelファイルを生成しようとしています。ローカルでうまく動作しています。私はherokuで遅延ジョブを実行するためにスケジューラを使用しています。ジョブはExcelを生成せずに正常に終了しています。axlsxを使用して遅延ジョブメソッドでExcelを作成

def self.generate_excel  
Axlsx::Package.new do |p| 
    p.workbook.add_worksheet(:name => "Stock Details") do |sheet| 
     sheet.add_row ["S.No", "ProductId", "Title"] 
     products.each_with_index do |prods, index| 
     sheet.add_row ["1", "1234", "product title"] 
       end 
      end 
    p.serialize("#{Rails.root}/app/views/stock_details/stock_details.xlsx") 
end 

私はdelayedjob 4.1を使用しています:

私の遅延仕事の方法は次のようになります。

+1

私はherokuが読み取り専用システムであることを知っているので、アプリケーションの実行中にファイルをシステムに書き込むことはできません。 –

+0

あなたはtempフォルダ – Thorin

答えて

2

@Зелёныйはすでに答えているので、あなたのdynoは「読み込み専用」ファイルシステムを持っています。ある意味では、ファイルはdynoの再起動の間に保持されず、2つの要求の間にそれらが保持されるという保証はありません。ここexcerpt from the docsは次のとおりです。

各ダイノはとすぐに外しとして廃棄されている他のダイナモと共有しない独自の短命のファイルシステムを有しています。このファイルシステムにはslugアーカイブが設定されているため、1回限りのdynosはアプリケーションにデプロイされているものをすべて利用することができます。

一時フォルダとして#{Rails.root}/tmpフォルダを使用できますが、外部ストレージ(S3、CDNなど)にファイルをアップロードする必要があります。 Herokuは扱いやすいようにいくつかのアドオンを持っています。

+0

にファイルを書き込む必要があります@Uzbekjonに感謝します。そのファイルが一時フォルダにどれくらいあるか。 – ank

+0

保証はありません。あなたのdynoプロセスが実行されるまでは、ほとんどの場合です。しかし、それはまた、herokuがあなたのdynoプロセスを新しいものに置き換えることができるので、保証されていません。 – Uzbekjon

関連する問題