37 votes

blueprint/screen.css n'est pas précompilé

J'ai suivi l'excellent tutoriel RoR de Michael Hartl, mais j'utilise RoR 3.1. Je suis un débutant dans le RdR 3.1 et j'ai besoin d'aide concernant le pipeline des actifs. Voici mon problème :

Avant de passer à la section 5.3, j'ai pensé que j'aimerais pousser vers Heroku et voir comment les choses évoluent. À ma grande surprise, "GET /" donne lieu à une erreur 500. Tout s'est bien passé dans mon environnement de développement local. J'ai ensuite essayé d'exécuter ma sample_app locale sous production-environment ( rails s -e production ). Même résultat, erreur 500 :

Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Pages#home

Showing /Users/john/Projects/sample_app/app/views/layouts/_stylesheets.html.erb where line #4 raised:

blueprint/screen.css isn't precompiled

Informations complémentaires :

  1. J'ai placé le répertoire CSS de Blueprint sous vendor/assets/stylesheets.

  2. J'ai suivi les conseils de Michael à la section 13.1.4 et j'ai mis ce qui suit dans mon app/views/layouts/application.html.erb :

    <!DOCTYPE html>
    <html>
      <head>
        <title><%= title %></title>
        <%= render 'layouts/stylesheets' %>
        <%= stylesheet_link_tag "application" %>
        <%= javascript_include_tag "application" %>
        <%= csrf_meta_tags %>
      </head>
      <body>
        <div class="container">
          <%= render 'layouts/header' %>
          <section class="round">
            <%= yield %>
          </section>
          <%= render 'layouts/footer' %>
        </div>
      </body>
    </html>
  3. Contenu de app/views/layouts/_stylesheets.html.erb :

    <!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %>
    <%= stylesheet_link_tag 'blueprint/print',  :media => 'print' %>
    <!--[if lt IE 8]><%= stylesheet_link_tag 'blueprint/ie' %><![endif]-->
  4. J'ai exécuté bundle exec rake assets:precompile.

  5. Contenu de public/assets/manifest.yml :

    ---
    logo.png: logo-8e0a5ad292fbb13a2b07e68fa3995406.png
    rails.png: rails-bd9ad5a560b5a3a7be0808c5cd76a798.png
    blueprint/plugins/buttons/icons/cross.png: blueprint/plugins/buttons/icons/cross-2ebcd25368006d1b7b0c5b7d6b523ab3.png
    blueprint/plugins/buttons/icons/key.png: blueprint/plugins/buttons/icons/key-55237526967cbcab3e8cfb12f0029d88.png
    blueprint/plugins/buttons/icons/tick.png: blueprint/plugins/buttons/icons/tick-3f5fc1f52b505b93f88263e0432d25ce.png
    blueprint/plugins/buttons/readme.txt: blueprint/plugins/buttons/readme-3ff7f5dbb0288d71f70682fdbe9d86ec.txt
    blueprint/plugins/fancy-type/readme.txt: blueprint/plugins/fancy-type/readme-e7ed185d1a9f23256d418ab929b464d9.txt
    blueprint/plugins/link-icons/icons/doc.png: blueprint/plugins/link-icons/icons/doc-b071fd74b88ff38cda8360a53f493013.png
    blueprint/plugins/link-icons/icons/email.png: blueprint/plugins/link-icons/icons/email-28104e72b3418737d4b9b329c12ec358.png
    blueprint/plugins/link-icons/icons/external.png: blueprint/plugins/link-icons/icons/external-ee6d976ddb80125fafe1a33c6f8aed10.png
    blueprint/plugins/link-icons/icons/feed.png: blueprint/plugins/link-icons/icons/feed-59bc8604661681639d25cb7015a32c38.png
    blueprint/plugins/link-icons/icons/im.png: blueprint/plugins/link-icons/icons/im-afeeb6e0b652c1edb1441bf0fb428596.png
    blueprint/plugins/link-icons/icons/lock.png: blueprint/plugins/link-icons/icons/lock-d73c4b3b57ce72cb6dbd8b265507ff75.png
    blueprint/plugins/link-icons/icons/pdf.png: blueprint/plugins/link-icons/icons/pdf-c4c543e5103a8516839a7846b91e1ac4.png
    blueprint/plugins/link-icons/icons/visited.png: blueprint/plugins/link-icons/icons/visited-fb2370448bc4ea5d079e963a8c0d900b.png
    blueprint/plugins/link-icons/icons/xls.png: blueprint/plugins/link-icons/icons/xls-5399729cd31dffc492a04b3805cd0be1.png
    blueprint/plugins/link-icons/readme.txt: blueprint/plugins/link-icons/readme-42c02030199cd36a671d4b623cb4dc36.txt
    blueprint/plugins/rtl/readme.txt: blueprint/plugins/rtl/readme-8d11bf76e19fb3fc7dbc6c2ddb54b92d.txt
    blueprint/src/grid.png: blueprint/src/grid-973add038ed86febca85f03e8b35b94a.png
    jquery-ui.min.js: jquery-ui-7e33882a28fc84ad0e0e47e46cbf901c.min.js
    jquery.min.js: jquery-8a50feed8d29566738ad005e19fe1c2d.min.js
    application.js: application-a552e1db33b8be6a42eedf1261916f3c.js
    application.css: application-214e0c0742f20b334e8a7776e0a4c71d.css
  6. Je ne vois pas blueprint/screen.css dans manifest.yml.

Qu'est-ce que je rate ?

75voto

Jeppe Liisberg Points 1462

Desde http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

Si vous avez d'autres manifestes ou des feuilles de style individuelles et des fichiers JavaScript à inclure, vous pouvez les ajouter au tableau de précompilation

Cela signifie que, dans votre config/environnements/production.rb, vous définissez les paramètres suivants

config.assets.precompile += %w( blueprint/screen.css blueprint/print.css )

ou un fourre-tout :

config.assets.precompile += %w( *.css *.js )

3voto

T0xicCode Points 1062

J'ai ajouté une référence aux feuilles de style blueprint dans mon fichier application.css. De cette façon, je n'ai pas besoin de changer la mise en page pour modifier les feuilles de style, il me suffit de modifier le fichier application.css, d'exécuter la commande rake assets:precompile et redémarrez le serveur web (si webrick ou similaire).

Mon application.css ressemble actuellement à ceci :

/*
 * This is a manifest file that'll automatically include all the stylesheets available in this directory
 * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
 * the top of the compiled file, but it's generally better to create a new file per style scope.
 *= require_self
 *= require_tree ./blueprint
 *= require_tree . 
 */

2voto

Sirex Points 110

Vous pouvez vouloir précompiler vos actifs en production comme décrit ci-dessus. Et si vous utilisez capistrano, vous pouvez le faire après la mise à jour du code :

require 'bundler/capistrano'

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

2voto

Dave Haynes Points 999

D'après ma propre expérience de ce problème, alors que je suivais également l'excellent tutoriel sur les RdR de Michael Hartl, il y a une étape qui, à mon avis, pourrait être omise à ce stade...

bundle exec rake assets:precompile    
git add public/assets
git commit -m "vendor compiled assets"
git push heroku

J'ai trouvé ceci aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X