2013-08-31 8 views
11

は、私はそれがローカルで正常に機能しますが、Herokuのに遅れ仕事中にエラー 「いいえがあるフォルダストアファイル私の遅れ仕事で

file_path = Rails.root.join('tmp', "#{file_name}." + file_extension); 
exported_file = kit.to_pdf 
# Save file to disk 
File.open(file_path, 'wb') do |file| 
     file << exported_file 
end 

をtmpにするために、ファイルを作成しようとしましたそのようなファイルまたはディレクトリ - /app/tmp/test.pdf "

私はこの問題をどのように解決できますか。私はS3にファイルを保存したくありません。 ありがとうございます

答えて

13

ヘロクはephemeral filesystemと呼ばれるものを使用しています。これは、あなたのローカルファイルシステムが単一のdynoのみにアクセス可能であり、dynoが停止、再起動、または移動されると、ローカルファイルシステム上のすべてのファイルが破壊されることを意味します。

遅延処理プロセスがファイルを外部プロセスに転送する唯一の方法は、ファイルをより永続的な場所に保存することです。これはS3、データベース、Rackspace Filesなどですが、Herokuではローカルファイルシステムではありません。

ただし、ファイルを一時的なスクラッチ位置に保存する場合は、ローカルファイルシステムを使用することをお勧めします。 /app/tmpディレクトリが存在しない可能性があるため、問題が発生している可能性があります。

ワーカーにこれを追加してみてください:

Dir.mkdir(Rails.root.join('tmp')) 

それとも、あなたのgitリポジトリにtmpディレクトリを追加します。

mkdir tmp 
touch tmp/.keep 
git add tmp/.keep 
git commit -m "Add tmp directory to app repository." 
+0

ありがとう、私はs3に保存します – ZeroX

関連する問題