0

私のアプリでは、ユーザーはロゴをアップロードしてプロファイル ページに表示することができます (Carrierwave + s3 を使用)。

私のローカルアプリでは、画像のパスは次のとおりです: https://s3.amazonaws.com/iemarkt/uploads/user/logo/squaredeye_336x336.jpg

しかし、Heroku でデプロイされたアプリでは、イメージ パスは「/assets/」であり、エラーが発生し、ユーザーがイメージをアップロードできません。

Heroku アプリで Carrierwave + s3 を使用してファイルをアップロードしようとすると、「申し訳ありませんが、問題が発生しました。」というエラーが表示されます。ログを調べると、次のエラーが表示されます。

    2012-08-20T21:18:56+00:00 app[web.1]: Started GET "/assets/" for 24.90.124.181 at 2012-08-20 21:18:56 +00002012-08-20T21:18:56+00:00 app[web.1]:2012-08-20T21:18:56+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets"):

私の店_dir

    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/"

production.rb でこの行のコメントを外しました (Heroku は Nginx を使用していると読みましたが、Nginx を機能させるために他に何かする必要があるかどうかはわかりません)。

  config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'

パスが自分の s3 アカウントにつながらない理由が本当にわかりません。

これが私のアプリです

4

1 に答える 1

1

アプリをデプロイしようとしましたが、正常に動作しました。ユーザーが画像をアップロードしたことを確認してください

http://young-reaches-9187.herokuapp.com/deals/1

私が変更したのは搬送波の設定だけで、地域名が間違っていました: あなたは地域を使おうとしていました

'eu-east-1' 存在しないので、次のように変更しました: 'us-east-1'

リージョンの完全なリストは、http: //docs.amazonwebservices.com/general/latest/gr/rande.htmlから入手できます。

ところで、AWS 資格情報をアプリに書き込むべきではありません。たとえば、バケットにアップロードしたばかりですが、ファイルを破棄できた可能性があります。環境変数を使用する必要があります。

また、.gitignore に database.yml を追加する必要があります。

于 2012-09-30T22:16:42.083 に答える