2016-06-23 4 views
0

どのようにHerwaveで画像をアップロードするためにCarrierwaveを使用するか考えてください。Carrierwave + Heroku

私はアップローダーファイルにこれを追加しました:

def cache_dir 
    "#{Rails.root}/tmp/uploads" 
end 

が、画像はまだ保存されません!画像をアップロードすると保存され、ページを更新すると画像が壊れます。

助けていただけたら幸いです!ありがとう

答えて

2

Amazon S3のようなサードパーティストレージサービスなしでHerokuを使用して画像をアップロードすることはできません。

https://devcenter.heroku.com/articles/s3

Herokuのは、あなたがtmpの内側にちょうどサードパーティのサービスに送信するために、ファイルを保存できます。代わりに、デフォルトの霧

:AWS S3にファイルと設定のアップロードcarrierwaveアップローダークラス内には、例えば

ストレージを設定することができます。他にもオプションがあります。

1つのことは、Herokuで無料のティアインスタンスを使用している場合、アップロードが1分で完了する必要があることです。ファイルをs3アカウントに直接アップロードすることをお勧めします。

https://github.com/dwilkie/carrierwave_direct

は、Herokuの上のファイルシステムが永続化されていない

1

お役に立てば幸いです。デプロイメント・メカニズム(git push)を介してアップロードされたファイルのみが「永続化」されます。あなたの"#{Rails.root}/tmp/uploads"フォルダにあるもののようなものは消去されます。だから彼らは消えている。


私はsimilar question hereに回答しました。ここに引用がある:

Herokuの上のあなたのダイナモは、「読み取り専用」のファイルシステムを持っています。ある意味では、ファイルはdynoの再起動の間に保持されず、2つの要求の間にそれらが保持されるという保証はありません。ここexcerpt from the docsは次のとおりです。

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

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

関連する問題