アプリを 3.2.12 から 4.0.0.rc1 に切り替えました。その後、本番で見たら背景画像が消えていました。残りの画像アセットは問題なく取得されました。
私のログでは、正常にレンダリングされたすべての画像の最後に、次のようにダイジェストが追加されていることがわかりました。
2013-05-12T19:57:05.856277+00:00 heroku[router]: at=info method=GET path=/asset/explore-9ec2a1cfd4784133755637f6ef6d5673.png host=xxx.herokuapp.com fwd="69.140.148.75" dyno=web.1 connect=3ms service=5ms status=200 bytes=4064
そして、失敗した背景画像にはダイジェストがなく、404 応答コードがありました。
2013-05-12T19:57:05.736354+00:00 heroku[router]: at=info method=GET path=/assets/background.png host=xxxx.herokuapp.com fwd="69.140.148.75" dyno=web.1 connect=2ms service=7ms status=404 bytes=728
production.rb ファイルには、キャッシュの目的でこれを有効にする構成行があります。
# Generate digests for assets URLs
config.assets.digest = true
これは、背景の CSS です。
body {
background-image: url('background.png');
background-attachment: fixed;
background-position: 100% 100%;
background-repeat: no-repeat;
}
最後にハッシュのないプレーンなアセット (「background.png」) を参照していたため、CSS ファイルが存在しない画像 URL を取得しようとしていると結論付けました。これは、CSS の画像のみの問題です。私の .erb ファイルで参照されているすべての画像は問題ありません。では、ダイジェストをハードコーディングせずに CSS でこのアセットを参照するにはどうすればよいでしょうか? 回避策はありますか?
読んでくれてありがとう。