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

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

【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

【Rails4】開発環境から本番環境に移行でハマったメモ

開発環境から本番環境にcontroller、view等のファイルをコピーし、view内のindex.htmlが読み込まれなかったので、メモです。

【事象】
開発環境から本番環境にコードをコピーしても、public/index.htmlを読み込んでしまう
public/index.htmlはデフォルトでは存在しなくて、環境構築でApache経由でRailsにアクセスできるかを確認する際に作成しました。
※index.htmlを作成しないと下記のURLに記載されているエラーが表示され、動作確認ができない
https://koichi-memo.hatenablog.com/entry/2018/07/05/154045

【原因】
/public/index.htmlが存在する場合、ブラウザからhttp://<サーバIP>でアクセスした際に、そちらが優先して読み込まれてしまうため

【対応】
/public/index.htmlを削除またはリネームすることで、view内のindex.htmlが読み込まれるようになる。

※環境情報
OS:Centos6.9
フレームワーク : Rails 4.2.9
Web:apache 2.2
DB : MySQL 5.6
ruby:2.3.7