13

Ho sviluppato un sito in rotaie, tutto procede relativamente liscio. All'improvviso le mie modifiche alle viste e alle risorse non appaiono più. Cambio un foglio di stile o un po 'di html e ricarico il mio browser allo http://0.0.0.0:3000 e nulla cambia. Quindi riavvio WEBrick e ancora non è cambiato nulla. Questo è anche il caso se cambio completamente un'immagine.Ambiente dev rails che non aggiorna html/css/assets anche dopo il riavvio del server

L'unico modo per ottenere i nuovi cambiamenti è di precompilare il patrimonio:

C:\Users\me\website>rake assets:precompile 
C:/Ruby193/bin/ruby.exe C:/Ruby193/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets 

Perché è mostrando produzione, come il RAILS_ENV? Forse il mio ambiente di sviluppo è diventato in qualche modo l'ambiente di produzione? Ma anche in questo caso non avrei bisogno di precompilare le risorse per far riflettere le modifiche. In ogni caso Rails.env.development? restituisce true e Rails.env.production? restituisce false in controller e file ERB.

Ho provato a cancellare la mia directory/tmp inutilmente.

ho dovuto aggiungere la seguente riga in config/application.rb al fine di ottenere Heroku per lavorare con la bussola:

config.assets.initialize_on_precompile = false 

Tuttavia, la rimozione che la linea non ha aiutato il mio problema in ogni caso.

risposta

31

Eliminare il contenuto della directory public/assets/. Ecco dove vanno i file precompilati e vengono pubblicati se esistono, piuttosto che la richiesta che ricade su Sprockets. Puoi tranquillamente nuotare l'intera directory e le cose dovrebbero funzionare di nuovo.

+1

perfetta, grazie –

+4

Purtroppo questo non funziona ancora per me in fase di sviluppo. – Donato

+6

Vale anche la pena cancellare la cartella 'tmp/cache' – McFadden

7

Un'altra tecnica consiste nel rinominare la directory public/assets/in qualcosa di simile a public/assets_hide /. Quindi rinominalo prima di eseguire "rake assets: precompilare" e premere sul server. Questo riduce il tempo di precompilazione e mantiene anche le autorizzazioni del file di asset per alcune gemme, come ad esempio i ricchi, che vengono copiate sulle risorse.

Un modo più semplice è quello di modificare il vostro/ambienti di file di configurazione/development.rb a:

config.serve_static_assets = false 

Allora non avrete bisogno di pasticciare con la directory pubblica/patrimonio. Tuttavia, se si utilizza qualcosa come la graffetta per caricare file di immagine, questo non funzionerà perché i file di immagine non saranno pubblicati.

3

Probabilmente evidente a tutti, ma volevo solo aggiungere che, se l'eliminazione o la ridenominazione pubblico/attività/cartella, probabilmente anche bisogno di riavviare il server locale e la cache del browser chiaro :-)

Problemi correlati