如何正常处理无法访问的数据库服务器?

我有一个主要在mysql中的应用程序,但是有几页需要连接到另一个mssql服务器。 我成功完成了这项工作,但是当我在Mac笔记本电脑上开发,并且sql server在另一台主机上时,它有时不可用。 当服务器不可用时,是否有一种优雅的方式来处理连接? 即,我仍然希望开发和测试运行不依赖于该服务器的部件。

如果生产rails应用程序失去与ms sql服务器的连接,这也可以很方便 – 那么能够捕获错误并显示一个很好的“服务器不可用”消息可能会很好…但仍然允许其余的不依赖于该数据库运行的应用程序。

我会考虑在需要数据库访问的页面上使用beforefilter。 当您检测到DB已关闭时,将重定向到非数据库页并闪烁错误消息。

before_filter :check_for_database def check_for_database begin ActiveRecord::Base.connection_pool.with_connection {|con| con.active?} rescue => err flash[:error] = "The database is down, please use pages that dont require database access." redirect_to :controller => 'home' return end 

这是受到RailsForumpost的启发。