blueprint / screen.css non è precompilato

Ho seguito l’eccellente RoR Tutorial di Michael Hartl, ma sto usando RoR 3.1. Sono un principiante di RoR 3.1 e ho bisogno di aiuto relativo alla pipeline delle risorse. Ecco il mio problema:

Prima di continuare con la sezione 5.3, ho pensato che mi piacerebbe spingere a Heroku e vedere come si sviluppano le cose. Con mia sorpresa “GET /” risulta nell’errore 500. Tutto è andato bene nel mio ambiente di sviluppo locale. Ho quindi provato a eseguire il mio sample_app locale in ambiente di produzione ( rails s -e production ). Stesso risultato, errore 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 

Informazioni di supporto:

  1. Metto la directory CSS blueprint sotto vendor / assets / stylesheet.
  2. Ho seguito il consiglio di Michael sulla sezione 13.1.4 e ho il seguente aspetto della mia app / views / layouts / application.html.erb:

               
  3. Contenuto di app / views / layouts / _stylesheets.html.erb:

       'screen' %>  'print' %>  
  4. Ho eseguito un pacchetto di rake exec asset: precompilato.

  5. Contenuto di 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. Non vedo blueprint / screen.css in manifest.yml.

Cosa mi manca?

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

Se si includono altri manifesti o fogli di stile individuali e file JavaScript da includere, è ansible aggiungerli all’array di precompilazione

Ciò significa che nella configurazione / ambienti / produzione.rb, si imposta

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

o un catchall:

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

Ho aggiunto un riferimento ai fogli di stile del modello nel mio file application.css. In questo modo, non devo modificare il layout per modificare i fogli di stile, ho semplicemente bisogno di modificare il file application.css, eseguire rake assets:precompile e riavviare il webserver (se webrick o simile).

Il mio application.css al momento assomiglia a questo:

 /* * 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 . */ 

Si consiglia di precompilare le risorse in produzione come descritto in precedenza. E se usi capistrano puoi farlo dopo l’aggiornamento del codice:

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

Dalla mia esperienza personale con questo problema, dove stavo anche passando per l’eccellente tutorial su RoR di Michael Hartl, c’è stato un passo che penso possa essere lasciato fuori a questo punto …

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

Ho trovato questo qui .