J'ai fait une application de rails de base avec un simple contrôleur de pages avec une fonction d'index et quand je charge la page, j'obtiens:
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
la source
la source
Réponses:
Par défaut, Rails suppose que vos fichiers sont précompilés dans l'environnement de production.Si vous souhaitez utiliser la compilation en direct (compilez vos ressources pendant l'exécution) en production, vous devez définir config.assets.compile sur true .
Vous pouvez utiliser cette option pour revenir à Sprockets lorsque vous utilisez des ressources précompilées mais qu'il manque des fichiers précompilés.
Si l'
config.assets.compile
option est définie sur false et qu'il manque des fichiers précompilés, vous obtiendrez un "AssetNoPrecompiledError" indiquant le nom du fichier manquant.la source
application.rb
. Ajouter / modifierapplication.rb
:config.assets.precompile += %w( first.css second.js )
. Maintenant, ces fichiers seront également compilés. N'ajoutez pas tous les fichiers si vous les utilisez uniquement dans les pignonsrequire
, mais uniquement si vous les incluez avec<link>
/<script>
Vous obtiendrez de meilleures performances en production si vous définissez config.assets.compile sur false dans production.rb et précompilez vos ressources. Vous pouvez précompiler avec cette tâche de râteau:
Si vous utilisez Capistrano, la version 2.8.0 a une recette pour gérer cela au moment du déploiement. Pour plus d'informations, consultez la section "En production" du Guide du pipeline d'actifs: http://guides.rubyonrails.org/asset_pipeline.html
la source
rake -T
oubundle exec rake -T
est votre ami.bundle exec rake ...
vous assurera de charger le râteau approprié et les dépendances associées pour votre application. Si vous n'utilisez pas bundler, vous devez simplement exécuterrake ...
.OK - j'ai eu le même problème. Je ne voulais pas utiliser "config.assets.compile = true" - je devais ajouter tous mes fichiers .css à la liste dans config / environnements / production.rb:
Ensuite, j'ai dû créer (et supprimer plus tard) tmp / restart.txt
J'ai toujours utilisé l'assistant stylesheet_link_tag, j'ai donc trouvé tous les fichiers CSS supplémentaires que je devais ajouter avec:
la source
Une solution rapide pour les utilisateurs de capistrano est de mettre cette ligne sur Capfile
la source
Pour tous ceux qui lisent ceci mais qui n'ont pas de problème avec
application.css
et à la place avec leurs classes CSS personnalisées, par exempleadmin.css
,base.css
etc.La solution consiste à utiliser comme mentionné
Et dans les références des feuilles de style, faites référence
application.css
Étant donné que le pipeline d'actifs précompilera toutes vos feuilles de style dans application.css. Cela se produit également en développement, donc l'utilisation d'autres références est incorrecte lors de l'utilisation du pipeline d'actifs.
la source
J'avais exactement la même erreur dans mon environnement de développement. En fin de compte, tout ce que je devais faire pour y remédier était d'ajouter:
à mon fichier config / environnements / development.rb et il l'a corrigé. Ma dernière configuration en développement lié aux actifs ressemble à:
la source
J'ai également eu ce problème, où essayer de s'exécuter en production sans précompilation, cela générerait toujours des erreurs non précompilées. J'ai dû changer la ligne commentée application.rb:
la source
config/application.rb
Voici la solution rapide:
Si vous utilisez capistrano, ajoutez ceci à votre deploy.rb:
casquette déployer
la source
J'ai rencontré ce message d'erreur aujourd'hui et je voulais publier la résolution dans mon cas. Il s'avère que mon problème était que l'un de mes fichiers css manquait d'une accolade fermante et cela empêchait la compilation du fichier. Il peut être plus difficile de le remarquer si vous disposez d'un processus automatisé qui configure tout (y compris la précompilation des ressources) pour votre environnement de production.
la source
Après tout le reste a échoué ...
Ma solution a été de changer le fichier de mise en page de
à
Et ça a marché! (Vous pouvez placer le fichier de réinitialisation dans le manifeste.)
la source
Juste une autre façon de résoudre ce problème sur Heroku: assurez-vous que votre rakefile est validé et poussé.
la source
Sur le serveur Heroku (système de fichiers en lecture seule), si vous voulez une compilation d'exécution de CSS (ce n'est pas recommandé mais vous pouvez le faire), assurez-vous que vous avez fait les réglages comme ci-dessous -
la source
si vous pensez que vous avez tout bien suivi mais que vous n'avez toujours pas de chance, assurez-vous simplement que vous / capistrano exécutez touch tmp / restart.txt ou équivalent à la fin. J'étais dans la liste malchanceuse mais maintenant :)
la source
Vous en avez probablement un
syntax error
dans le CSS que vous utilisez.Exécutez cette commande
Cela donnera l'exception, corrigera cela et vous avez terminé.
Merci
la source