Sto solo facendo conoscenza con Rails 3.1 e ho bruciato un po 'di tempo aggiornando un vecchio progetto e cercando di capire come si comporta la nuova pipeline di asset in modalità di sviluppo rispetto alla produzione.Come si rilevano errori nella pipeline delle risorse dei binari prima della produzione?
L'impostazione predefinita config.assets.precompile
impostazione benedice solo application.css e application.js, con l'intenzione che tutto dovrebbe essere servita come un unico foglio di stile e un unico file javascript.
Ovviamente ci sono situazioni in cui non vogliamo che, in modo che possiamo aggiungere elementi alla lista in quella variabile di configurazione ...
Ecco la situazione mi sono imbattuto in con il mio progetto sandbox quando si va alla produzione:
- Ha visitato il sito in fase di sviluppo, ha visto che tutto funzionava. Le risorse sono state collegate come file separati e il sito è stato visualizzato correttamente.
- Ha caricato il sito sul mio server e ho cercato di farlo funzionare in produzione. Il primo errore stava dicendo che "ie.css" (un foglio di stile condizionale) non è precompilato. (Ero in Safari e questo foglio di stile non è stato nemmeno scaricato: l'errore è stato generato dall'helper
stylesheet_link_tag
prima di eseguire il rendering della pagina.) - Ran
rake assets:precompile
e riprovato. - Aggiunto l'articolo in questione a
config.assets.precompile
e riprovato. - Kicked l'errore lungo il cordolo fino a quando non ha colpito un altro errore di asset.
- GOTO 3.
Non sapendo come affrontare questo, sono andato in tondo un paio di volte fino a quando ho pensato che ho ottenuto tutte le attività e il sito è stato il rendering in produzione. Quindi l'ho provato in MSIE e ho ricevuto un altro errore 500: "belated_png_fix.js" veniva caricato condizionatamente e non è stato visualizzato fino a quel momento.
Quindi la mia domanda è, oltre a tentativi ed errori o una forte dipendenza dai test di integrazione, come posso prevedere che il mio sito non verrà bombardato quando la pipeline degli asset scopre che non è stato aggiunto alcun foglio di stile o javascript alla lista di precompilazione?
Sono anche curioso di sapere perché una risorsa del foglio di stile mancante dovrebbe causare l'errore dell'intera pagina 500 invece di limitarsi a compilarlo su richiesta o a servire un 404 quando tale risorsa viene richiesta. Si tratta di un progetto intenzionale per "fallire presto"?
Ho recentemente convertito una vecchia app nella pipeline degli asset e non ho avuto problemi. Mi ci è voluto un po 'per capire come tutto ha funzionato insieme però. Per rispondere alla tua domanda, puoi mostrare il contenuto dei tuoi file css e js, in particolare le istruzioni require? Sono anche interessato a come li chiami dal punto di vista. Infine sono tutti in app/asset o stai usando lib/assets e anche vendor/assets? –