最初に、私は Ruby と Rails に関してはまったくの初心者であるということから始めさせてください。
heroku へのデプロイに成功したアプリのソースを入手しました。開発モードで実行すると正常に動作しますが、本番モードに切り替えると画像が表示されません。
アプリはassets_sync Gem を使用しており、画像やその他のアセットは、S3 バケットを使用して AWS から提供する必要があります。css ファイルと js ファイルは正しく処理されますが、画像は処理されません。この記事では、それがどのように機能するかについて非常によく説明してい ます https://firmhouse.com/blog/complete-guide-to-serving-your-rails-assets-over-s3-with-asset_sync
私が知る限り、css と画像はプリコンパイルされています。sass から生成された css を使用して、画像を 1 つのスプライトに結合します。この記事は、ここで何が起こっているかを説明するのに役立ちましたhttp://compass-style.org/help/tutorials/spriting/ (経験豊富なレール開発者にとってはおそらく新しいものではありません)
もう少し掘り下げて、実行中のアプリの css を表示すると、背景画像の URL プロパティに URL からのバケット名がありません。
以下に例を示します。私はその部分が次のようになると確信してい//.s3ます//mybucket.s3:
someclass {
background: url(http://.s3.amazonaws.com/assets/myicon.png)
}
URLを取得してブラウザのアドレスバーに直接配置すると、画像が表示されません!. しかし、バケット名を追加するとすぐに、イメージがダウンロードされます。つまり、次のように動作し、イメージが s3 バケットに存在することを確認します。
http://my-bucket.s3.amazonaws.com/assets/myicon.png
これは、css が正しくプリコンパイルされておらず、おそらく構成からバケット名が見つからないことを意味します。
heroku の設定が正しいことを確認しました。以下のセットで:
- FOG_PROVIDER、
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- FOG_DIRECTORY
- FOG_REGION
私はこれでかなりの時間を費やして壁にぶつかり、結果なしで問題をグーグルしました。それで、誰かが以前にこの問題を見たことがありますか、または何がうまくいかないのかを解決する方法を提案していますか?