Sto lavorando a un'app Rails con un numero elevato di risorse, che purtroppo non possono essere ridotte. Nella produzione questo non è un problema, ma in fase di sviluppo, ~ 20 richieste di asset per pagina visitata non possono essere rapidamente servite da un server di applicazioni (come webrick o Thin).Compilare automaticamente le risorse e servirle con nginx (sviluppo)
Così ho iniziato a utilizzare nginx in sviluppo per servire qualsiasi cosa in public/assets
. Si noti che nginx è puramente una struttura di sviluppo - non intendiamo usarlo in produzione.
Per farlo funzionare ho dovuto fare due cose:
- Impostare
config.assets.debug
false - corsa
rake assets:precompile
Purtroppo ci sono due problemi (quest'ultimo è il più importante) con il mio setup:
- Ogni modifica delle risorse richiede manualmente in esecuzione
rake assets:precompile
di nuovo - Per il server delle app per raccogliere le risorse appena compilate, devo riavviarlo.
Che cos'è un setup nginx/Asset Pipeline corretto che non richiede il riavvio del server Rails dopo la precompilazione?
La compilazione automatica sarebbe anche il benvenuto.
Avete provato gli altri server Rails come Unicorn e Puma? Potresti sempre usare [Guard] (https://github.com/guard/guard) per monitorare le modifiche ai file ed eseguire "rake assets: precompile' e riavviare il server. – max
+1 per guardia. Unicorn/Puma non sono server HTTP specializzati (in particolare Unicorn che presuppone la rapida progettazione dei client) quindi preferirei usare nginx per le risorse se possibile. – vemv
Questo sembra un po 'come se fosse superata la pipeline delle risorse - Rails non è realmente costruito per servire asset statici in fase di sviluppo - dovrebbe essere fatto in fase di deployment. Quindi riavviare il server sarà piuttosto goffo. Quindi potresti usare, ad esempio, il grunt o il broccolli per ridurre le tue risorse. – max