2009-11-22 4 views

risposta

17

Questo è il risultato della chiamata: cache => true sul tag di collegamento al foglio di stile.

: cache => true prende tutti i fogli di stile forniti e li concatena in un unico file chiamato all.css.

Il motivo per cui si sta vedendo solo questo nella distribuzione di Heroku è perché chiama all.css concatenato solo quando l'applicazione Rails è in esecuzione in modalità produzione.

Così, per esempio diciamo che ho tre fogli di stile e li includo nel mio header:

= stylesheet_link_tag "application", "jquery-ui", "style", :cache => true 

Quando in fase di sviluppo, questo includerà application.css, jquery-ui.css e style.css (in questo ordine).

In produzione concatenerà tutti i CSS dai tre file (nell'ordine fornito) in un unico file chiamato "all.css", che sarà l'unico file CSS incluso.

Il vantaggio sta facendo meno richieste HTTP in produzione e idealmente una dimensione di file più piccola per il CSS incluso, che dovrebbe migliorare il carico di pagina.

Modifica Come indicato da Casper nei commenti, Heroku ha un file system di sola lettura. Si potrebbe voler guardare Heroku Asset Packager per una soluzione specifica per Heroku.

+1

Grazie per la risposta, tutte le idee perché Heroku potrebbero non pick-up il foglio di stile correttamente quando la cache è impostata su true? –

+4

Heroku è un ambiente di distribuzione di sola lettura. Per questo motivo, Rails non può scrivere all.css in/public/stylesheets/e fallisce silenziosamente. Stylesheet_link_tag si collega ancora a all.css purché si usi cache => true, quindi la soluzione rapida non consiste nel memorizzare i fogli di stile su Heroku. Ulteriori informazioni qui: http://docs.heroku.com/constraints#read-only-filesystem –

+0

Grazie Casper e Bryan –

0

Impostazione: cache => true causa il fallimento delle mie richieste.

La mia soluzione per il breve termine è quello di aggiungere il seguente al mio config/ambienti/prodcution.rb

config.serve_static_assets = true 

Sono un po 'meno preoccupato per la performance essere dietro Cloudflare. Trovare un modo per servire i miei file css e js concatenati è nella mia lista di cose da fare.

1

testato questo e non ha funzionato per me (l'aggiunta di config.serve_static_assets = true production.rb)