我有一个主要在mysql中的应用程序,但是有几个页面需要连接到另一个mssql服务器。我成功完成了这项工作,但是当我在Mac笔记本电脑上开发,并且sql server在另一台主机上时,它有时不可用。当服务器不可用时,是否有一种优雅的方式来处理连接?即,我仍然希望开发和测试运行不依赖于该服务器的部件。
如果生产rails应用程序失去与ms sql服务器的连接,这也可能很方便 - 那么能够捕获错误并显示一个很好的“服务器不可用”消息可能会很好...但仍然允许不依赖于该数据库运行的应用程序的其余部分。
答案 0 :(得分:2)
我会考虑在需要数据库访问的页面上使用before过滤器。当您检测到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
这是受到RailsForum here上的一篇文章的启发。