Ruby on Rails 3.1 - Asset Pipeline プリコンパイルエラー!
Updated:
昨日に引き続き、Ruby on Rails 3.0 系から 3.1 系へ移行すべく、各種テストをしていた時のことです。
Rails アプリを production モードで起動させようとすると、以下のような内部エラーが発生しました。 ※development モードや test モードでは以下のようなメッセージは出力されません。
ActionView::Template::Error (hoge.gif isn't precompiled):
hoge.gif がプリコンパイルされていない、と言っているようです。
調査してみたところ、Rails 3.1 から導入された Asset Pipeline という機能では production (公開)モードで公開する際、assets ディレクトリ内のファイルがプリコンパイルされていないといけないようです。 ※Asset Pipeline とは何か?はここでは説明しません。各自調べてください。
メモ
Rails アプリのディレクトリで以下のように実行するだけです。
# bundle exec rake assets:precompile RAILS_ENV=production
その他
上記のように予めプリコンパイルしておく方法のほかに、”config/application.rb” の “config.assets.compile” を true にする方法もあります。 実行時に逐次コンパイルする方法です。 しかし、この方法は逐次コンパイルするのでパフォーマンスが劣ります。
以上。
Comments