背景
プロダクションで出たJSのエラーがローカルで再現できない場合に、JSファイルは、precompileされているのでどこでエラーがでているのか見定めるのが難しい。
そこで、Productionのコードにconsole.log
などを書いてどこのファイルは正常で、どこのファイルで死んでいるのかをチェックしたい。
もしも
単にDeployの際にPrecompileがうまく言ってないだけの場合は、capistranoを使っている場合以下のコマンドでprecompileを再試行することができる
bundle exec cap production deploy:assets:precompile
念のために、serverも再起動して確認。
# 再起動のrakeタスクは自分で作成する必要がある
bundle exec cap production unicorn:restart
Productionサーバで手動でPrecompileし直す
-
<path to app>/release/<最新のtimestamp>/app/assets/
のファイルを編集する。- 例:
console.log 'aaaa.coffee start'
など
- 例:
-
Precompileしたものを全て削除
bundle exec rake assets:clobber RAILS_ENV=production
-
precompileする(新しいdigest が割り振られる)
bundle exec rake assets:precompile RAILS_ENV=production
-
Webサーバを再起動
sudo systemctl restart <rails_app>.service
これで、どこのファイルまで問題なく読まれて、どこで問題が置きたかを簡単に確かめられる。