随着今天亚马逊Relational Database Service及其'强制'维护窗口的推出,我想知道是否有人在Rails中处理丢失的数据库连接有任何解决方案。
理想情况下,如果数据库连接消失(即亚马逊正在进行维护),我希望能够自动向访问者提供维护页面 - 有没有人做过这样的事情?
干杯 Arfon
答案 0 :(得分:4)
您可以使用Rack Middleware执行此操作:
class RescueFromNoDB < Struct.new(:app)
def call(env)
app.call(env)
rescue Mysql::Error => e
if e.message =~ /Can't connect to/
[500, {"Content-Type" => "text/plain"}, ["Can't get to the DB server right now."]]
else
raise
end
end
end
显然,您可以自定义错误消息,e.message =~ /Can't connect to/
位可能只是偏执狂,几乎所有其他SQL错误都应该在ActionController::Dispatcher
内捕获。