2014-10-09 21 views
0

我使用rails 3.2,mongoid 3,devise 2.2.4,passenger和nginx。在rails应用程序中如何拯救Moped :: Errors :: ConnectionFailure?

当我的Rails应用程序找不到MongoDB时,出现错误“我们很抱歉,但出错了”。我想将错误消息更改为与错误更相关的内容。例如:无法连接到数据库。

我看到,Moped :: Errors :: ConnectionFailure被引发,但是我无法通过rescue_from在应用程序控制器中解救它。似乎错误提升了,当设计尝试从初始化会话中获取用户时。关闭:authenticate_user!不能帮助。

回答

0

找出发生错误的行。用begin; rescue块围绕着它,像这样:

begin # code which raises the error rescue Moped::Errors::ConnectionFailure => e raise MyOwnError end

当然,你需要定义MyOwnError:

class MyOwnError < StandardError; end

好运。你可能会尝试谷歌Ruby错误和例外。

+0

它在监狱里上升。我不想猴子补丁。 – Arugin 2014-10-28 16:06:14

+0

你的代码有问题。监狱工作。我使用了Sinatra,Padrino和Rails,还有Moped/Mongoid和Warden,而且我没有任何问题。听起来就像你的应用程序和MongoDB有连接问题。 无论如何,你的问题是如何解救错误,并用你自己的信息提出自己的错误,我回答了。我推荐的并不是什么“猴子补丁”,它是简单的Ruby。 – 2014-10-28 23:10:57

+0

但是,我记得最近有一位同事与乘客/ nginx +轻便摩托车有类似的问题,无法获得联系。你有没有试过在乘客/ nginx之外运行代码?看看它是否在没有乘客/ nginx的情况下运行。 – 2014-10-28 23:14:58

相关问题