Rails 6でFontAwesomeをEC2にデプロイするとprecompileでエラーが発生する。

Mentor

タイトル通り

Rails 6.1.4.6でEC2にデプロイするとprecompileでエラーが発生します。

もちろんrails sしてもエラーで表示されないです。

 

結論

解決方法としてはCDNを使うのが一番手っ取り早いです。

なのでapplication.html.erbに下記を入れるのが一番早いです。

<link rel ="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">

 

すでに入れてしまっているものは削除してください。

webpackerでやってしまった場合

webpackerの場合はapplication.js, application.scssに記載しているだろう

@import '~bootstrap/scss/bootstrap';

import '@fortawesome/fontawesome-free/js/all'

を削除します。

 

gemでやってしまった場合

gemの場合はGemfileから下記font-awesome-sassを削除してscssからも削除してください。

gem 'font-awesome-sass'
@import "font-awesome-sprockets";
@import "font-awesome";

 

どうしてもやりたい場合

webpackerの場合はapplication.jsは共通で問題ないです。

import '@fortawesome/fontawesome-free/js/all';

application.scssがdevelopの場合は下記のようにimportする必要があり、

@import '~@fortawesome/fontawesome-free/scss/fontawesome';

productionの場合、下記のようにする必要があります。

$fa-font-path: '@fortawesome/fontawesome-free/webfonts';
@import '@fortawesome/fontawesome-free/scss/fontawesome';
@import '@fortawesome/fontawesome-free/scss/solid';
@import '@fortawesome/fontawesome-free/scss/regular';
@import '@fortawesome/fontawesome-free/scss/brands';
@import '@fortawesome/fontawesome-free/scss/v4-shims';

でないとdevelop版では表示されずcssが途中までしか読み込まれないのでstylesheetも設定されずproductionの場合はprecompileでエラーになります。

ただしapplication.js/application.scssなのでdevelop, productionを切り替えるのは容易ではないのでおとなしくCDNを使った方がよいです。

個人的にはjsやcssは依存関係に縛られないCDNを使う方がよいと思っています。

コメント

タイトルとURLをコピーしました