rails 3.1.0 ActionView:: Template:: Error (application.css nie jest prekompilowany)

Zrobiłem podstawową aplikację rails z prostym kontrolerem stron z funkcją indeksu i po załadowaniu strony otrzymuję:

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'

Gemfile

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
Author: mari, 2011-09-01

14 answers

Domyślnie Rails zakłada, że Twoje pliki są wstępnie skompilowane w środowisku produkcyjnym, jeśli chcesz użyć kompilacji na żywo (kompilować swoje zasoby podczas wykonywania) w środowisku produkcyjnym musisz ustawić konfigurację .aktywa.skompiluj do true .

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

Możesz użyć tej opcji, aby cofnąć się do zębatek, gdy używasz wstępnie skompilowanych zasobów, ale brakuje wstępnie skompilowanych plików.

Jeśli opcja config.assets.compile jest ustawiona na false i brakuje wstępnie skompilowanych plików, otrzymasz "AssetNoPrecompiledError" określający nazwę brakującego pliku.

 313
Author: Chris Muench,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 06:13:14

Uzyskasz lepszą wydajność w produkcji, jeśli ustawisz config.aktywa.skompilować do false w produkcji.rb i wstępnie skompilować swoje aktywa. Możesz wstępnie skompilować to zadanie rake:

bundle exec rake assets:precompile

Jeśli używasz Capistrano, wersja 2.8.0 ma przepis, aby poradzić sobie z tym podczas wdrażania. Aby uzyskać więcej informacji, zapoznaj się z sekcją" w produkcji " w Przewodniku po rurociągu zasobów: http://guides.rubyonrails.org/asset_pipeline.html

 202
Author: richardsun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-18 19:28:30

OK-miałem ten sam problem. Nie chciałem używać " config.aktywa.compile = true " - musiałem dodać wszystkie moje .pliki css do listy w config/environments / production.rb:

config.assets.precompile += %w( carts.css )

Potem musiałem utworzyć (a później usunąć) tmp/restart.txt

Konsekwentnie używałem helpera stylesheet_link_tag, więc znalazłem wszystkie dodatkowe pliki css, które musiałem dodać:

find . \( -type f -o -type l \) -exec grep stylesheet_link_tag {} /dev/null \;
 31
Author: Don Law,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-18 20:32:34

Szybkie poprawki dla capistrano użytkownika jest umieszczenie tej linii do Capfile

# Uncomment if you are using Rails' asset pipeline
load 'deploy/assets'
 30
Author: user673207,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-21 17:30:43

Dla wszystkich, którzy to czytają, ale nie mają problemu z application.css, a zamiast tego ze swoimi niestandardowymi klasami CSS np. admin.css, base.css itd.

Roztwór należy stosować zgodnie z opisem

bundle exec rake assets:precompile

A w arkuszach stylów odniesienia po prostu odniesienia application.css

<%= stylesheet_link_tag    "application", :media => "all" %>

Ponieważ assets pipeline wstępnie skompiluje wszystkie arkusze stylów w aplikacji.css. Dzieje się tak również w fazie deweloperskiej, więc używanie jakichkolwiek innych odniesień jest niewłaściwe podczas korzystania z assets pipeline.

 11
Author: Haris Krajina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-29 19:08:39

Miałem dokładnie ten sam błąd w moim środowisku programistycznym. W końcu wszystko, co musiałem zrobić, aby to naprawić, to dodać:

config.assets.manifest = Rails.root.join("public/assets")

Do mojego config / environments / development.plik rb i go naprawił. Moja Ostateczna konfiguracja w rozwoju związana z zasobami wygląda następująco:

config.assets.compress = false  
config.assets.precompile += %w[bootstrap-alerts.js] #Lots of other space separated files
config.assets.compile = false
config.assets.digest = true
config.assets.manifest = Rails.root.join("public/assets")
config.assets.debug = true
 8
Author: darchitect,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 13:40:28

Miałem również ten problem, w którym próba uruchomienia w produkcji bez prekompilacji nadal powodowałaby błędy nie-prekompilowane. Musiałem zmienić, która linia była komentowana aplikacja.rb:

  # If you precompile assets before deploying to production, use this line
  # Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  Bundler.require(:default, :assets, Rails.env)
 5
Author: mathdancer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-11 00:57:17

Oto szybka poprawka:

Jeśli używasz capistrano zrób to dodaj to do swojego wdrożenia.rb:

after 'deploy:update_code' do
  run "cd #{release_path}; RAILS_ENV=production rake assets:precompile"
end

Cap deploy

 4
Author: fivetwentysix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-17 18:18:13

Natknąłem się dziś na ten Komunikat o błędzie i chciałem opublikować rezolucję do mojego konkretnego przypadku. Okazuje się, że mój problem polegał na tym, że jeden z moich plików css brakowało nawiasu zamykającego i to powodowało, że plik nie został skompilowany. Może być trudniej to zauważyć, jeśli masz zautomatyzowany proces, który ustawia wszystko (w tym precompile zasobów) dla Twojego środowiska produkcyjnego.

 2
Author: SnapShot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-07 18:28:55

W końcu wszystko inne zawiodło...

Moim rozwiązaniem była zmiana pliku układu z

= stylesheet_link_tag "reset-min", 'application'

Do

= stylesheet_link_tag 'application'
I zadziałało! (Możesz umieścić plik reset w manifeście.)
 1
Author: Victor Pudeyev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-17 00:16:38

Kolejny sposób na naprawienie tego na Heroku: upewnij się, że Twój Rakefile jest zaangażowany i popchnięty.

 1
Author: phillbaker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-20 16:35:42

Na serwerze heroku (readonly filesystem), Jeśli chcesz kompilacji runtime css (nie jest to zalecane, ale możesz to zrobić), upewnij się, że zrobiłeś ustawienia jak poniżej -

# inside config/application.rb
config.assets.enabled = true
config.assets.prefix = Rails.root.join('tmp/assets').to_s

# If you are using sass then keep gem outside of asset group
 gem 'sass-rails',   '3.1.4'

# inside config/environments/production.rb
config.assets.compile = true
 0
Author: Sandip Ransing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-23 10:36:11

Jeśli uważasz, że po wszystko dobre, ale nadal pecha, po prostu upewnij się, że / capistrano uruchomić touch tmp / restart.txt lub odpowiednik na końcu. Byłem na liście pechowców, ale teraz:)

 0
Author: Muntasim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-07 06:47:50

Prawdopodobnie masz syntax error w css, którego używasz.

Uruchom to polecenie

$ bundle exec rake assets:precompile RAILS_ENV=development --trace

To da wyjątek, naprawione, że i wszystko gotowe.

Dzięki

 0
Author: Shoaib Malik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-18 10:21:01