Ruby
Rails

Rails 3.2のproduction環境でisn't precompiledと出る場合の対処

More than 5 years have passed since last update.

Rails 3.2でproduction環境で実行した際、下記のようなエラーが発生。

ActionView::Template::Error (application.css isn't precompiled):

アセットパイプラインという機能でapp/assets配下がコンパイルされていないとダメとのこと。

bundle exec rake assets:precompile RAILS_ENV=production

上記を実行して再度、試したところ次はCSSに対しActionController::RoutingErrorが発生。
調べると静的なファイルも含めてコンパイルする必要があるとのことで下記を追加。

config/environments/production.rb
config.serve_static_assets = true

無事に動作した。

他にも解決方法があり、下記のように設定するとコンパイル済みのアセットがなかったらコンパイルするようになる。

config/environments/production.rb
config.assets.compile = true

ちなみにコンパイル済みのアセットをクリアする方法は下記の通り。

bundle exec rake assets:clean RAILS_ENV=production