Zrobiłem podstawową aplikację railsową z prostym kontrolerem stron z funkcją indeksu, a kiedy ładuję stronę, 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
ruby-on-rails
asset-pipeline
Chris Muench
źródło
źródło
Odpowiedzi:
Domyślnie Railsy zakładają, że masz wstępnie skompilowane pliki w środowisku produkcyjnym, jeśli chcesz używać kompilacji na żywo (kompiluj zasoby w czasie wykonywania) podczas produkcji, musisz ustawić config.assets.compile na true .
Tej opcji można użyć do powrotu do Sprockets, gdy używasz zasobów prekompilowanych, ale brakuje plików prekompilowanych.
Jeśli
config.assets.compile
opcja jest ustawiona na wartość false i brakuje wstępnie skompilowanych plików, pojawi się komunikat „AssetNoPrecompiledError” wskazujący nazwę brakującego pliku.źródło
application.rb
. Dodaj do / editapplication.rb
:config.assets.precompile += %w( first.css second.js )
. Teraz te pliki również się skompilują. Nie dodawaj wszystkich plików, jeśli używasz ich tylko w zębatkachrequire
, ale tylko jeśli<link>
<script>
Lepszą wydajność w produkcji uzyskasz, jeśli ustawisz config.assets.compile na false w production.rb i wstępnie skompilujesz swoje zasoby. Możesz wstępnie skompilować za pomocą tego zadania prowizji:
Jeśli używasz Capistrano, wersja 2.8.0 ma przepis, który poradzi sobie z tym w czasie wdrażania. Aby uzyskać więcej informacji, zobacz sekcję „W produkcji” Przewodnika dotyczącego rurociągów zasobów: http://guides.rubyonrails.org/asset_pipeline.html
źródło
rake -T
lubbundle exec rake -T
jest twoim przyjacielem.bundle exec rake ...
zapewni, że załadujesz odpowiednią prowizję i powiązane zależności dla twojej aplikacji. Jeśli nie korzystasz z programu pakującego, wystarczy uruchomićrake ...
.OK - miałem ten sam problem. Nie chciałem używać „config.assets.compile = true” - musiałem dodać wszystkie moje pliki .css do listy w config / environment / production.rb:
Następnie musiałem utworzyć (a później usunąć) tmp / restart.txt
Konsekwentnie korzystałem z pomocnika stylesheet_link_tag, więc znalazłem wszystkie dodatkowe pliki css, które musiałem dodać za pomocą:
źródło
Szybkim rozwiązaniem dla użytkownika capistrano jest umieszczenie tej linii w pliku Capfile
źródło
Dla wszystkich, którzy to czytają, ale nie mają problemu z
application.css
niestandardowymi klasami CSS i zamiast nichadmin.css
, np.base.css
Itp.Rozwiązaniem jest użycie, jak wspomniano
A w arkuszach stylów odniesienia są tylko odniesieniami
application.css
Ponieważ potok zasobów wstępnie skompiluje wszystkie arkusze stylów w application.css. Dzieje się tak również w fazie rozwoju, więc używanie innych odniesień jest nieprawidłowe podczas korzystania z potoku zasobów.
źródło
Miałem dokładnie ten sam błąd w moim środowisku programistycznym. Ostatecznie wszystko, co musiałem zrobić, aby to naprawić, to dodać:
do mojego pliku config / environment / development.rb i naprawiłem to. Moja końcowa konfiguracja w rozwoju związana z zasobami wygląda następująco:
źródło
Miałem również ten problem, w którym próba uruchomienia w środowisku produkcyjnym bez prekompilacji nadal powodowałaby błędy niekompilowane. Musiałem zmienić, który wiersz został skomentowany application.rb:
źródło
config/application.rb
Oto szybka poprawka:
Jeśli używasz capistrano, zrób to, dodaj to do pliku deploy.rb:
wdrożenie WPR
źródło
Natknąłem się dziś na ten komunikat o błędzie i chciałem opublikować rozwiązanie w mojej konkretnej sprawie. Okazuje się, że mój problem polegał na tym, że w jednym z moich plików css brakowało nawiasu zamykającego, co powodowało, że plik nie został skompilowany. Trudniej to zauważyć, jeśli masz zautomatyzowany proces, który konfiguruje wszystko (w tym prekompilację zasobów) dla środowiska produkcyjnego.
źródło
Po tym wszystkim innym się nie udało ...
Moim rozwiązaniem była zmiana pliku układu z
do
I zadziałało! (Możesz umieścić plik resetowania w manifeście).
źródło
Kolejny sposób, aby to naprawić w Heroku: Upewnij się, że Twój Rakefile jest zatwierdzony i wypchnięty.
źródło
Na serwerze heroku (tylko do odczytu system plików), jeśli chcesz kompilację css w czasie wykonywania (nie jest to zalecane, ale możesz to zrobić), upewnij się, że dokonałeś ustawień takich jak poniżej -
źródło
jeśli uważasz, że podążałeś za wszystkim dobrze, ale nadal nie miałeś szczęścia, po prostu upewnij się, że / capistrano run touch tmp / restart.txt lub równoważny na końcu. Byłem na pechowej liście, ale teraz :)
źródło
Prawdopodobnie masz
syntax error
w używanym css.Uruchom to polecenie
To da wyjątek, naprawisz to i wszystko gotowe.
Dzięki
źródło