2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

The asset "application.css" is not present in the asset pipeline.の解決法

Last updated at Posted at 2020-10-01

問題

アプリを本番環境にデプロイする過程で、

$ rake assets:precompile RAILS_ENV=production

アセットパイプラインのエラーが生じた。

アセットパイプラインとは?

アセットパイプラインとは、JavaScriptやCSSのアセットを最小化 (minify: スペースや改行を詰めるなど) または圧縮して連結するためのフレームワークです。
アセットパイプラインでは、CoffeeScriptやSass、ERBなど他の言語で記述されたアセットを作成する機能を追加することもできます。

参考記事:Railsガイド「アセットパイプラインについて」

エラー

The asset "application.css" is not present in the asset pipeline.

解決法

config/environments/production.rb
# config.assets.js_compressor = :uglifier 変更前
config.assets.js_compressor = Uglifier.new(harmony: true) #変更後

用語の確認

uglifierとは?

RailsのGemfileにはデフォルトでuglifierが含まれています。
このgemは、NodeJSで記述されたUglifyJSをRubyでラップしたものです。
uglifierによる圧縮は次のように行われます。
ホワイトスペースとコメントを除去し、ローカル変数名を短くし、可能であればifとelseを三項演算子に置き換えるなどの細かな最適化を行います。
以下の設定により、JavaScriptの圧縮にuglifierが使用されます。

config/environments/production.rb
config.assets.js_compressor = :uglifier

参考:Railsガイド「アセットパイプラインについて」

デフォルトは上記の設定だが、uglifierのGithub によれば、
Railsでは下記の設定に置き換えるようにと書いてある。

config/environments/production.rb
config.assets.js_compressor = Uglifier.new(harmony: true)

ECMAScriptとは?

ECMAScript(エクマスクリプト)は、JavaScriptの標準であり、Ecma Internationalのもとで標準化手続きなどが行われている。

参考:ECMAScriptのwikipedia

参考記事

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?