Rails 3.2.6 を使用しており、carrierwave を使用して画像をアップロードしています。画像をアップロードすると、正常に表示され、画像の URL も正常に機能します。しかし、heroku で次の git commit をプッシュすると。
git push staging master
すでにアップロードしたすべての画像が表示されず、その画像パスが機能しないのはなぜですか?
何が問題なのか誰でも教えてください。
タナクス
Rails 3.2.6 を使用しており、carrierwave を使用して画像をアップロードしています。画像をアップロードすると、正常に表示され、画像の URL も正常に機能します。しかし、heroku で次の git commit をプッシュすると。
git push staging master
すでにアップロードしたすべての画像が表示されず、その画像パスが機能しないのはなぜですか?
何が問題なのか誰でも教えてください。
タナクス
アップロードは機能しますが、新しいコードをプッシュするか、アプリケーションを再起動すると、アップロードが失われます。
Heroku はエフェメラル ファイル システムを使用しており、各 dyno が最初にデプロイされたコードの個別のコピー (スラッグ) を受け取るため、アップロードはアップロードを処理した dyno にのみ存在します (https://devcenter.heroku.com/articles/dynos#一時的なファイルシステム)。
Amazon S3、Rackspace Files などの外部永続データ ストアを使用する必要があります。
s3 で Carrierwave をセットアップしましたか (https://github.com/jnicklas/carrierwave#using-amazon-s3)? Heroku には読み取り専用のファイル システムがあります (https://devcenter.heroku.com/articles/s3)。