Ich habe eine einfache Rails-App mit einem einfachen Seiten-Controller mit Indexfunktion erstellt. Wenn ich die Seite lade, erhalte ich:
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
quelle
quelle
Antworten:
Standardmäßig geht Rails davon aus, dass Ihre Dateien in der Produktionsumgebung vorkompiliert sind. Wenn Sie die Live-Kompilierung (Kompilieren Ihrer Assets zur Laufzeit) in der Produktion verwenden möchten, müssen Sie die Datei config.assets.compile auf true setzen .
Mit dieser Option können Sie auf Sprockets zurückgreifen, wenn Sie vorkompilierte Assets verwenden, aber vorkompilierte Dateien fehlen.
Wenn die
config.assets.compile
Option auf false gesetzt ist und vorkompilierte Dateien fehlen, wird ein "AssetNoPrecompiledError" angezeigt, der den Namen der fehlenden Datei angibt.quelle
application.rb
. Hinzufügen zu / bearbeitenapplication.rb
:config.assets.precompile += %w( first.css second.js )
. Jetzt werden auch diese Dateien kompiliert.require
<link>
<script>
Sie erzielen eine bessere Leistung in der Produktion, wenn Sie config.assets.compile in Production.rb auf false setzen und Ihre Assets vorkompilieren. Sie können mit dieser Rechenaufgabe vorkompilieren:
Wenn Sie Capistrano verwenden, enthält Version 2.8.0 ein Rezept, um dies bei der Bereitstellung zu handhaben. Weitere Informationen finden Sie im Abschnitt "In Produktion" des Asset Pipeline-Handbuchs: http://guides.rubyonrails.org/asset_pipeline.html
quelle
rake -T
oderbundle exec rake -T
ist dein Freund.bundle exec rake ...
sichergestellt, dass Sie den richtigen Rake und die zugehörigen Abhängigkeiten für Ihre App laden. Wenn Sie keinen Bundler verwenden, werden Sie einfach ausgeführtrake ...
.OK - ich hatte das gleiche Problem. Ich wollte nicht "config.assets.compile = true" verwenden - ich musste alle meine .css-Dateien zur Liste in config / environment / Production.rb hinzufügen:
Dann musste ich tmp / restart.txt erstellen (und später löschen)
Ich habe konsequent den Stylesheet_link_tag-Helfer verwendet, also habe ich alle zusätzlichen CSS-Dateien gefunden, die ich hinzufügen musste mit:
quelle
Eine schnelle Lösung für Capistrano-Benutzer besteht darin, diese Zeile in Capfile zu setzen
quelle
Für alle diejenigen , die dies lesen , haben aber kein Problem mit
application.css
und stattdessen mit ihren benutzerdefinierten CSS - Klassen zBadmin.css
,base.css
usw.Die Lösung ist wie erwähnt zu verwenden
Und in Stylesheets verweisen nur Verweise
application.css
Da die Assets-Pipeline alle Ihre Stylesheets in application.css vorkompiliert. Dies geschieht auch in der Entwicklung, sodass die Verwendung anderer Referenzen bei der Verwendung der Assets-Pipeline falsch ist.
quelle
Ich hatte genau den gleichen Fehler in meiner Entwicklungsumgebung. Am Ende musste ich nur noch Folgendes hinzufügen, um das Problem zu beheben:
in meine Datei config / environment / development.rb und es wurde behoben. Meine endgültige Konfiguration in der Entwicklung in Bezug auf Assets sieht folgendermaßen aus:
quelle
Ich hatte auch dieses Problem, bei dem der Versuch, in der Produktion ohne Vorkompilierung zu laufen, immer noch nicht vorkompilierte Fehler auslöste. Ich musste ändern, welche Zeile kommentiert wurde application.rb:
quelle
config/application.rb
Hier ist die schnelle Lösung:
Wenn Sie capistrano verwenden, fügen Sie dies zu Ihrer deploy.rb hinzu:
Kappe bereitstellen
quelle
Ich bin heute auf diese Fehlermeldung gestoßen und wollte die Lösung für meinen speziellen Fall veröffentlichen. Es stellte sich heraus, dass mein Problem darin bestand, dass einer meiner CSS-Dateien eine schließende Klammer fehlte und dies dazu führte, dass die Datei nicht kompiliert wurde. Es kann schwieriger sein, dies zu bemerken, wenn Sie über einen automatisierten Prozess verfügen, der alles (einschließlich der Vorkompilierung von Assets) für Ihre Produktionsumgebung einrichtet.
quelle
Immerhin ist alles andere gescheitert ...
Meine Lösung bestand darin, die Layoutdatei von zu ändern
zu
Und es hat funktioniert! (Sie können die Rücksetzdatei in das Manifest einfügen.)
quelle
Nur eine andere Möglichkeit, dies bei Heroku zu beheben: Stellen Sie sicher, dass Ihr Rakefile festgeschrieben und gepusht ist.
quelle
Wenn Sie auf dem Heroku-Server (schreibgeschütztes Dateisystem) eine Laufzeitkompilierung von CSS wünschen (dies wird nicht empfohlen, aber Sie können dies tun), stellen Sie sicher, dass Sie die folgenden Einstellungen vorgenommen haben:
quelle
Wenn Sie der Meinung sind, dass Sie alles gut verfolgt haben, aber dennoch Pech haben, stellen Sie sicher, dass Sie / capistrano am Ende touch tmp / restart.txt oder ein gleichwertiges Programm ausführen. Ich war aber jetzt auf der Pechliste :)
quelle
Sie haben wahrscheinlich eine
syntax error
in der CSS, die Sie verwenden.Führen Sie diesen Befehl aus
Es wird die Ausnahme geben, das behoben und Sie sind alle fertig.
Vielen Dank
quelle