2011-06-23 16 views

Odpowiedz

10

Nie dotykaj tego. Jeśli użytkownik wprowadzi zły adres URL, otrzyma błąd 404 po przejściu na środowisko produkcyjne.

Dostajesz wyjątki tylko dlatego, że jesteś w środowisku programistycznym.

+0

Rozumiem. Dzięki! +1 – Ben

0

Powinieneś być w porządku, aby użyć domyślnej obsługi Railsów, która załaduje plik 404 do Twojego katalogu publicznego.

1

Wyświetl błąd 404, użytkownik wprowadził adres URL, w którym nie ma odpowiedniej akcji w sterowniku (lub trasie) zdefiniowanej do obsługi. Powinien być traktowany tak samo, jakby użytkownik wprowadził example.com/controller/jbsandfodsafoiuaudsfbsadf87basdfgsadfdsa.

0

W trybie produkcji wyjątek będzie obsługiwany automatycznie. Ale są przypadki, w których chcemy poradzić sobie z wyjątkami. W naszym przypadku wyrenderujemy specjalny układ dla takich stron.

W kontrolerze aplikacji trzeba ratować wyjątki tak:

PAGE_NOT_FOUND_ERRORS = ActiveRecord::RecordNotFound, ActionController::RoutingError, ActionController::UnknownAction, ActionController::UnknownController 
    def rescue_action_in_public(exception) 
    case exception 
    when *PAGE_NOT_FOUND_ERRORS 
     render_404 
    else 
     render_500 
    end 
    end 


    def render_404 
    render :file => File.join(RAILS_ROOT, 'public', '404.html'), :status => 404, :layout => true 
    end 



    def render_500 
    render :file => File.join(RAILS_ROOT, 'public', '500.html'), :status => 500 
    end 
1

W config/environments/development.rb, wyłącz consider_all_requests_local i zrestartować serwer. Teraz zobaczysz strony błędów. Po zakończeniu projektowania ponownie włącz consider_all_requests_local i ponownie uruchom serwer.

Podczas produkcji ludzie otrzymają zaprojektowaną stronę 404. W trakcie rozwoju widać ślad stosu, dzięki czemu można debugować własne błędy.

Powiązane problemy