local + productionで静的ファイルが見つからない

RailsのAsset Pipelineの対応で、

# config/environments/production.rb

config.assets.compile = true

で逃げていたのですが、稼働中のサーバに対して無駄なリソース使うことになるのでイケてないと思い、対応しようと思った時のメモです。

productionで動作させるときには、
app/assets/javascripts/application.js
app/assets/stylesheets/application.css
config/environments/production.rbのconfig.assets.precompile
等を編集しただけではダメで、

bundle exec rake assets:precompile

で、プリコンパイルしておく必要があるので、実行しておきます。
で、serverをproductionで実行。


・・・あれ?

cssやjsが404となります。
生成されたhtml見ても該当するファイル名はpublic/assetsに存在します。

ブラウザから直接叩いても404です。

試しにHerokuにあげてみると、問題なく動作している模様。
不思議な状況です。

google先生に聞いてみると、このような情報が!
Rails3.2で production にした途端にapplication.css が参照できなくなる:お題目うぉっち


config/environments/production.rbの「config.serve_static_assets」を
コメントアウトすることできちんと動作しました。


WEBrickで動作確認してると、こんな状況になるみたいですね。
うーん、Railsのハードルはやっぱり高いよ・・・