Catch 404 and 500 in rails

untuk melakukan kostumisasi halaman error untuk yang bertipe nya 404 (page not found) dan 500 (server error)

pada application.rb pada controller saya tambahkan kode berikut :

def rescue_404
rescue_action_in_public(ActionController::RoutingError)
end

def rescue_action_in_public(exception)
case exception
when ActionController::InvalidAuthenticityToken
when ArgumentError
when SyntaxError
render :template => "shared/error500", :status => "500"
else
render :template => "shared/error404", :status => "404"
end
end

def local_request?
return false
end

dan pada baris paling bawah pada routes.rb, sebelum end ditambahkan baris kode berikut

map.connect '*path', :controller => 'application', :action => 'rescue_404' unless ::ActionController::Base.consider_all_requests_local

yang nantinya akan bisa dilakukan costumisasi pada view shared/error404 atau shared/error500, untuk kemudahan tampilan error, namun ternyata untuk error 500 terkadang tidak jalan, dan untuk solusinya adalah dengan membuat library sendiri, ditaruh dalam folder lib, dengan nama error_catcher.rb

yang berisi kode sebagai berikut :
class ActionController::Base
def rescue_action_in_public(exception)
case exception
when ActiveRecord::RecordNotFound
when ActiveRecord::RecordInvalid
when ActionController::RoutingError
when ActionController::UnknownController
when ActionController::UnknownAction
when ActionController::MethodNotAllowed
render :template => "shared/error404", :status => "404"
else
render :template => "shared/error500", :status => "500"
end
end
end

* updated
jangan lupa pada config/environment.rb tambahkan kode berikut :
require 'error_catcher'

Selamat mencoba

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s