1. ホーム
  2. ruby-on-rails

[解決済み】rails 3.1.0 ActionView::Template::Error (application.css isn't precompiled)

2022-03-31 16:18:58

質問

基本的なrailsアプリで、index関数付きのシンプルなページコントローラを作成しました。

ActionView::Template::Error (application.css isn't precompiled):
    2: <html>
    3: <head>
    4:   <title>Demo</title>
    5:   <%= stylesheet_link_tag    "application" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8: </head>
  app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__43625033_88530400'

ジェムファイル

source 'http://rubygems.org'

gem 'rails', '3.1.0'

# Bundle edge Rails instead:
# gem 'rails',     :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

gem 'execjs'
gem 'therubyracer'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

gem 'jquery-rails'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'

group :test do
  # Pretty printed test output
  gem 'turn', :require => false
end

解決するには?

Railsのデフォルトでは、本番環境ではファイルがプリコンパイルされていると仮定しています。本番環境でライブコンパイル(実行時にアセットをコンパイルする)を使用したい場合は config.assets.compile を true に設定する。 .

# config/environments/production.rb
...
config.assets.compile = true
...

このオプションは、プリコンパイルされたアセットを使用していて、プリコンパイルされたファイルが不足している場合に、Sprocketsにフォールバックするために使用します。

もし config.assets.compile オプションが false に設定されており、プリコンパイルされたファイルがない場合、不足するファイルの名前を示す "AssetNoPrecompiledError" が表示されます。