У меня есть успокоительный API, созданный поверх приложения rails 3, я выдаю ошибку пользовательского исключения, когда объект не найден, как показано ниже
@line = @current_account.lines.find(:first, :conditions =>{:title => line_title})
raise CustomExceptionError.new("Line not found for title: #{line_title} under your account",404) if @line.nil?
вот взгляд на класс CustomExceptionError
class CustomExceptionError < StandardError
attr_accessor :message, :status
def initialize(message,status=422)
@message = message
@status = status
end
def to_s
"#{@message}"
end
end
и вот метод, который используется для обработки исключения
def custom_error_renderer(exception = nil)
if exception
logger.info "Rendering 404: #{exception.message}"
end
error = {:error => {:message => exception ? exception.message : "Undefined error."}}
render :json => error, :status => exception.status
конец
Но когда я смотрю на журнал сервера
18:12:09 action_controller Completed in 18ms
18:12:09 action_controller Rendering 404: Line not found for title: dater98 under your account
в журнале отсутствует код состояния
если я отрисовываю напрямую, вместо вызова CustomExceptionError
render :status => 404, :json => {:error => {:message=> "Line not found for title: #{line_title} under your account""}}
затем возвращается код состояния.
Completed 404 Not Found in 84ms (Views: 75.7ms)
Понятия не имею, что я здесь делаю неправильно. какие-либо предложения или угадайте ???