どうも中田です。
css内で画像を設定して、productionモードで動かすと画像が出ない!!(タイトルとそのままのこと言っちゃった)
ってことがあったので書いておきます。
rails4にてproductionモードで動作させる場合、事前にcss、js、画像ファイルなどのアセットをプリコンパイルする。
その際、ファイル名の後ろにダイジェストが付与されるのだが、css内部で画像を指定する場合、ダイジェストまで意識しないといけない。
プリコンパイル前のファイル名
login.png
プリコンパイル後のファイル名
login-df4b86a870a56daf4e6d646db6ce8e55.png”
#main { background-image: url("login.png"); }
cssでこのように定義するともちろん画像は表示されない。
では、どうするか。
手順は3つ
1. css -> scss 拡張子にする
2. url -> image-url にする
3. プリコンパイル実施 (bundle exec rake assets:precompile RAILS_ENV=production)
#main { background-image: image-url("login.png"); }
これでOK。
プリコンパイルした際、ちゃんと画像ファイルに付与されるダイジェストを入れた状態でCSSが生成される。