新手问题 写 deep health check 的时候遇到 template is missing 的问题

teifuania · 2017年06月28日 · 最后由 teifuania 回复于 2017年06月28日 · 1135 次阅读

本人 Ruby 新手一枚~ 刚刚开始自学 最近想给网站写一个 health check,具体代码如下

class HealthCheckController < ApplicationController

  def dbping
    begin
      result = ActiveRecord::Base.connection.select_value("select 'alive' from dual")
      render :text => "#{result}\n"
    rescue => ex
      logger.error ex.backtrace.join("\n")
      raise ActiveRecord::ConnectionNotEstablished
    end
  end

  #run a simple query to check the database
  def deep_health
    begin
      result = ActiveRecord::Base.connection.select_value("XXXXXXXXXXXXXXX")
      render :text => "#{result}\n"
    rescue => exception
      #log the error
      logger.error exception.backtrace.join("\n")
    end
  end
end

实际检测网页中,dbping 是好用的,但是/deep_health 则出现了 template is missing 的情况。真心求助各位大大

我觉得原因是

result = ActiveRecord::Base.connection.select_value("XXXXXXXXXXXXXXX")

报错了,没有走到 render 所以会有 template is missing,你可以试试在 rescue 里面在加个 render 试试

render :nothing => true
will_c_j 回复

是的是的。是这个 SQL 出现了问题。在 rescue 里面写 render 之后就会有写好的 render 出现。谢谢呀!!!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号