जब अपवाद उठाया जाता है तो मैं एक कस्टम त्रुटि पृष्ठ दिखाने के लिए इसका उपयोग करता हूं।
rescue_from Exception do |exception|
logger.error exception.class
logger.error exception.message
logger.error exception.backtrace.join "\n"
@exception = exception
# ExceptionNotifier::Notifier.exception_notification env, @exception
respond_to do |format|
if [AbstractController::ActionNotFound, ActiveRecord::RecordNotFound, ActionController::RoutingError, ActionController::UnknownAction].include?(exception.class)
format.html { render :template => "errors/404", :status => 404 }
format.js { render :nothing => true, :status => 404 }
format.xml { render :nothing => true, :status => 404 }
elsif exception.class == CanCan::AccessDenied
format.html {
render :template => "errors/401", :status => 401 #, :layout => 'application'
}
# format.js { render :json => { :errors => [exception.message] }, :status => 401 }
# format.js { render :js => 'alert("Hello 401")' }
format.js { render :template => 'errors/401.js.erb' }
else
ExceptionNotifier::Notifier.exception_notification(env, exception).deliver
format.html { render :template => "errors/500", :status => 500 } #, :layout => 'im2/application' }
# format.js { render :nothing => true, :status => 500 }
format.js { render :template => 'errors/500.js.erb' }
end
end
end
e.backtrace
। मैंने इसे उन परियोजनाओं में से एक में देखा है, जिनके साथ मैं काम कर रहा हूं। सबसे अच्छा दृष्टिकोण नहीं है, लेकिन यह काम करता है। हालांकि किसी और से बेहतर समाधान सुनने की उम्मीद है।