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
をコメントアウトしました。
だって、テンプレートリテラル便利だから使いたい。。。