capistranoでRailsアプリをdeployしたらエラーが発生したので、その解決方法を備忘録として記述します。
初歩的な内容なのに解決するのにえらい時間がかかった。。。
実行したこと
ローカル環境で bundle exec cap production deploy
を実行した。
エラー発生
deploy:assets:precompile
01 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
01 rake aborted!
01 Uglifier::Error: Unexpected character '`'
(後略)
エラー内容詳細
- ・エラー文
Uglifier::Error: Unexpected character '`'
- ・デプロイ実行内容
- アセットファイルをプリコンパイルした。
人間仕様のソースコードをコンパイラが理解できるように書き直す作業です。
※ちなみにデフォルトで書き直されるアセットファイルは、app/assetsディレクトリの、.jsと.css以外のファイルみたい。ただし、application.jsとapplication.cssはコンパイルされるとのこと。 - ・エラー内容
- JavaScriptコード軽量化Gemの
Uglifier
がエラーを起こしている。
'`(バッククォート)'
ってなんですか〜?って感じでしょうか。 - ・原因
- 今回はjsファイルでテンプレートリテラル記法を採用しており、ここで
'`(バッククォート)'
を使っているためエラーが発生していた。
要はテンプレートリテラル記法は比較的新しい記法のため、デプロイする際にエラーになる。
解決方法
config/environments/production.rb
の
config.assets.js_compressor = :uglifier
をコメントアウトしました。
だって、テンプレートリテラル便利だから使いたい。。。