Rails lo fa automaticamente quando si esegue in modalità produzione. Quando carichi la tua applicazione su un server live, Rails si occupa di gestire tali eccezioni e rendere le corrette pagine di errore con lo stato corretto dell'intestazione. Se stai cercando di vedere come appaiono queste pagine (per test o qualcosa del genere), accedi direttamente a loro tramite http://localhost:3000/404.html
Ogni volta che si imposta l'applicazione Rails su un server live (utilizziamo Apache come esempio), fornire la radice del sito come cartella /public
nell'applicazione. Quindi, ogni volta che viene fatta una richiesta a quell'indirizzo del server, Apache prima cerca in quella cartella pubblica e prova a servire un asset statico (questa è un'opzione configurabile in [environment].rb
). Se non riesce a trovare la pagina richiesta, la richiesta viene inoltrata attraverso lo stack Ruby.
In modalità di produzione, se Rails rileva un errore che non viene gestito (ad es., Avvio, salvataggio), genera l'errore fino allo stack, che indica ad Apache (di nuovo, nel mio esempio) a rende un errore appropriato.
Ecco alcuni errori comuni che vedrete in modalità di sviluppo e ciò che essi rendono in modalità di produzione:
ActiveRecord::RecordNotFound => 404 (page not found)
nil.method => 500 (server error) unless you turn off whiny nils
ActionController::RoutingError => 404 (page not found)
Ho pensato che mettere 404.htm e 500.htm nella cartella pubblica sia ok. Ma non sono sicuro. – PeterWong
Ho preso quelli lì dentro di default. Ma non si presentano se si verificano errori – daniel