Моноидное перенаправление ошибок
Я хотел бы иметь возможность перенаправить вывод, возникший из-за ошибки из mongoid. У меня есть простой код в следующем макете:
begin
[ruby code here to query database]
rescue [Moped Exception here] => e
puts e.message
end
Когда происходит ошибка, я получаю ее в следующем формате:
Moped::Errors::ConnectionFailure: Could not connect to a primary node for replica set <Moped::Cluster nodes=[<Moped::Node resolved_address=”ipAddress”>, <Moped::Node resolved_address=”ipAddress”>]>
Эта ошибка отображается несколько раз, прежде чем исключение будет фактически обнаружено и отображено. Я согласен с тем фактом, что ошибка возникает, но я хотел бы скрыть вывод ошибки выше / не отображать ее, а только отображать исключение. Есть ли какой-нибудь способ перенаправить вывод ошибки, возникший из-за ошибки ConnectionFailure. Или способ настроить mongoid так, чтобы сообщения об ошибках не отображались (я запускаю с консоли)? Любой способ перенаправить ошибки будет полезным.
1 ответ
В документах mongoid говорится, что вы не должны пытаться спасти от ConnectionFailure: http://mongoid.org/en/moped/docs/driver.html
Кроме того, вы говорите, что вам все равно, если это произойдет. Какой код вы пытались перенаправить пользователю? И что вы используете (Rails, Sinatra и т. Д.)?
Для Rails я обычно делаю следующее:
if !request.env["HTTP_REFERER"].blank? and request.env["HTTP_REFERER"] != request.env["REQUEST_URI"]
redirect_to :back
else
redirect_to root_path
end
Это попытается отправить пользователя обратно на его предыдущий путь, если это возможно (если он был сохранен), иначе это приведет его к root.