MongoDB-需要显示db的状态(是否运行)

时间:2011-08-29 15:03:18

标签: ruby-on-rails mongodb

我目前正在使用MongoDB来跟踪Rails 2应用中的各种内容。我使用以下代码来查看MongoDB是否已启动并正在运行,并根据状态显示链接或“脱机”消息。

这仅适用于管理员,因此它不是关键任务,因为应用程序将在没有MongoDB的情况下继续运行,但我确实希望在菜单未运行时禁用菜单中的链接。但是,我不喜欢下面代码的开销(运行时间不长,但希望有更简洁,更快捷的方式):

  def verify_mongodb_status
    begin
      track = Track.first
      @mongodb_running = true
    rescue
      @mongodb_running = false
      logger.debug("***MongoDB not running.***")
      notify_admin_about_errors("***MongoDB is not running***)
    end
   end
编辑:我忘了提到我已经为此做了一个before_filter;该方法位于application_controller.rb。

1 个答案:

答案 0 :(得分:0)

我决定选择action_caching,因为这似乎不是一个好方法。结果是从120毫秒到大约16-25毫秒的速度增加很快:

  def verify_mongodb_status
    begin
      track = Track.first
      @mongodb_running = true
    rescue => e
      @mongodb_running = false
      logger.debug("***MONGODB OFFLINE***: #{e}")
      notify_admin_about_errors("MongoDB", "MongoDB error:\n#{e}", nil)
      expire_action :action => :verify_mongodb_status
      return
    end
  end

我现在正在添加逻辑,以免在MongoDB离线时被电子邮件轰炸(1就足够了)。