新人Railsエンジニアの備忘録

忘れやすい性格なので、ハマったところとか、日々学んだことをメモとして残します。他の方が参照したときに少しでも役立てれば、うれしいです。

【Rails4】本番環境でCSSの読み込みができない

f:id:fairemygeneration:20181210142227j:plain:w300

開発環境から本番環境へファイルのコピーした後、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