如何获取错误源的文件名?

时间:2013-08-06 13:14:54

标签: ruby-on-rails

我已经制作了一个自定义异常处理程序,它在很大程度上起了很大的作用。这是它的要点 -

应用程序/错误/ duck.rb

module Duck

  def Duck::ReportError(u,c,m,p)
    User.send_error_email(u,c,m,p)
    User.msg(m)
    end
  end

应用程序/邮寄者/ notifications.rb

def err_report(current_user,err_script,err_msg,err_scrub)
  @current_user = current_user
  @err_script = err_script
  @err_msg = err_msg
  @err_scrub =  err_scrub
  mail(:to => sr_dev, :cc => jr_dev, :subject => "Error Found")
end

这就是我的问题所在 - 上面的代码是当前编写的。为了消除重复,有一些小的改变。我之前会按以下方式进行调用 - 任何错误都像这个例子一样处理,将其置于users_controller.rb中的所有操作中......

rescue Exception => msg
  Duck.ReportError(current_user,"users_controller.rb",msg,"Dumping params: #{params.inspect}")

任何错误都必须导致鸭子调用 - 因此之前的重复...没有达到此目的。它也完全删除了DRY,所以我重新编写了duck.rb文件并发现通过将它放在应用程序控制器中,任何从ApplicationController继承的东西都可以像这样引发鸭子 -

rescue_from Exception, :with => :any_error

protected

def any_error(msg)
  Duck.ReportError(current_user,"application_controller.rb",msg,"Dumping params: #{params.inspect}")
  render "home/duck.erb"
end

其余的代码对于手头的问题是微不足道的,这是: 我需要向开发团队展示错误源自哪个文件。当我第一次制作Duck时,它是从每个动作/视图/控制器直接调用的,如前所示,这是很多重复,但有一个好处,我可以告诉它具体哪个脚本生成错误。现在我有点抽象了错误处理程序,这很好 - 但每次出现错误时,例如reports_controller.rb,它都会将错误报告为来自application_controller.rb。我怎样才能解决这个问题?如何获得错误的实际来源?

系统:

$ rails -v
Rails 3.0.20
$ ruby -v
ruby 1.8.7 (2012-10-12 patchlevel 371) [x86_64-linux]

0 个答案:

没有答案