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

时间:2011-08-21 01:20:05

标签: ruby-on-rails

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

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

1 个答案:

答案 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上的一篇文章的启发。