2011年9月24日

Rails3.1 Production環境で画像が表示されない、HTTP Statusは200成功なのに

現象

Railsを-e productionで立ち上がるとき、或いはcapistrano本番サーバにデプロイしてアクセスする時に、HTTPのStatusは200なのに画像などが表示されない。JavascriptとCSSは問題ない。
発生バージョンはRails 3.1。

解決策

app/tmp/cacheを削除し、rake assets:precompileをもう一回実行。
ブラウザキャッシュを消してリロード。

調査経緯

assets周りの設定やfingerprint(MD5のハッシュ値)の比較など全部チェックしましたが、全然ダメでした。
最後はgithubのこのスレの方法で解決になりました。

問題となったrails applicationはRails 3.1.rc1から作っていたもので、そのままrc4, rc5, stableに更新してきました。githubで議論されたのはrc4からrc5になったときにこのような現象があったようです。恐らくtmp/cacheが変な動きをして手動で削除しない限り古いバージョンのものがずっと残されたかもしれません。

おまけ

Asset Pipelineの周りの設定ファイルを一応貼っておきます。

Githubでのスレ:https://gist.github.com/rails/rails/issues/2299

Share on Twitter Share the post
Qihuan Piao

朴 起煥

東京で働いている「外人歴」9年のソフトウェア「ライター」。いつの間にか納豆が食えるようになり、これで日本に慣れきったと思いきやまだまだ驚きが続いてる。読んだり書いたりするのが好きで、自身の経験や本から得た「何か」をここに書き出してる。最近古本屋にハマってる。

他にも英語中国語で書いてます、よろしければチェックしてみてください。