2012-05-04 8 views
5

ho una vista con nome new.html.erb con il seguente codice:Rails pagina di errore completo non mostrando per errori di vista

<%= some_non_existent_thing.imaginary_method %> 

Ora, vedo solo una semplice pagina di errore 500, come quella:

Errore interno server 500
Se si è l'amministratore di questo sito Web, leggere il file di registro di questa applicazione Web e/o il file di registro del server Web per scoprire cosa è andato storto.

Non dovrei vedere una pagina abbastanza formattata con alcune informazioni sull'eccezione?

Non sono sicuro di perdere qualcosa qui, ma credo che le rotaie mostrino la pagina di errore completa nell'ambiente di sviluppo quando c'è qualcosa di sbagliato nella vista.

+3

così, questo è successo nella vostra casella dev o luoghi come Heroku? –

+0

cosa c'è nei log? – gabrielhilal

risposta

5

Are sei sicuro di aver gestito l'ambiente di sviluppo? Verificare che RAILS_ENV=development o che si sta eseguendo rails server -e development.

Poi controllare il file development.rb, si dovrebbe avere la seguente riga in esso

config.consider_all_requests_local = true 
0

primo luogo, come Anton menziona nella risposta qui sotto, confermare che il config/environments/development.rb ha:

config.consider_all_requests_local = true 

e che sia in esecuzione il server in modalità di sviluppo.

Avevo assicurato quanto sopra e ancora osservato l'errore. Questo è successo nel mio caso, perché il mio logger ha avuto alcuni errori. Stavo usando un formattatore di log personalizzato, che utilizzava il metodo String#% per formattare il registro. % sembra essere molto buggato e porta a tutti questi strani errori. Ho capito questo aggiungendo una linea debugger al metodo controller e passando alla chiamata della funzione di rendering implicita. Ha colpito il bug e segnalato come un errore malformed format string.

Questo è stato il formattatore registro usavo prima, che ha causato gli insetti [avevo aggiunto in un file di inizializzazione]:

class Logger::SimpleFormatter 
    def call(severity, time, progname, msg) 
    "%-7s #{msg}\n" % severity 
    end 
end 

Queste modifiche Corretto il bug:

class Logger::SimpleFormatter 
    def call(severity, time, progname, msg) 
    severity_prefix = "[#{severity}]".ljust(7) 
    "#{severity_prefix} #{msg}\n" 
    end 
end 
0

Questo accade se il codice non è compilabile, ad esempio, se si dispone di un'istruzione if manca una fine.

+0

In fase di sviluppo, dovrebbe mostrare l'eccezione e non la pagina di errore 500. – felipero

Problemi correlati