【Rails4】本番環境でCSSの読み込みができない
開発環境から本番環境へファイルのコピーした後、CSSが読み込まれない事象が発生した際の対応メモです。
【原因】
productionモードではプリコンパイルを実行し、/App/public/assetsにCSS、JSのファイルを集めて、そのファイルたちを読み込むという流れになるらしいです。
そのため、コマンドを実行する作業が必要になります。
【対応】
下記のコマンドを実行する。
$ rake assets:precompile
※動的にプリコンパイルをする方法もあるようです。
$ vi config/environments/production.rb
config.assets.compile = true
※参考
https://tamosblog.wordpress.com/2013/03/11/assets/
http://rails.hatenadiary.jp/entry/2013/03/03/125801
http://interfirm.hatenablog.com/entry/2014/10/24/131503
https://qiita.com/yuuna/items/9a2954300a130a9637b8
http://interfirm.hatenablog.com/entry/2014/10/24/131503
※追記
その後、bootstrapが読み込まれない事象が発生し、app/assetsをテスト環境からコピーしたり、
public/assetsを再作成したりと色々試行錯誤していたところ、cssが読み込まれなくなる事象が発生
【事象】
sudo rake assets:clean RAILS_ENV=productionを実行したところ、エラーメッセージが表示されるようになる。
$ rake assets:precompile RAILS_ENV=production
【エラーメッセージ】
rake assets:precompile NoMethodError: undefined method `[]' for nil:NilClass
【対応】
cssからscssにリネームし、CSS、Bootstrap共に読み込まれるようになる。
/App/app/assets/stylesheets/application.css ↓ /App/app/assets/stylesheets/application.scss
設定変更を反映するため、下記のコマンドを実行
$ rake assets:precompile RAILS_ENV=production
$ passenger-config restart-app
※参考
https://qiita.com/pokohide/items/017afa5be3b7dc200a8d
※環境情報
OS:Centos6.9
フレームワーク : Rails 4.2.9
Web:apache 2.2
DB : MySQL 5.6
ruby:2.3.7