获取Ruby警告的堆栈跟踪信息

4

我在ruby 1.9中遇到了一些关于UTF字符串的奇怪错误。经常会出现这样的问题:

warning: regexp match /.../n against to UTF-8 string

我希望能够在警告时显示完整的堆栈跟踪或应用某种可以覆盖默认警告功能的猴子修补程序。我该如何做到这一点?


你的警告默认不应该显示文件和行号吗? - Andrew Grimm
2个回答

2

如果警告来自Ruby代码(而不是本机C代码),您可以覆盖Warning#warn,然后警告变成异常,您将获得回溯信息:

module Warning
  def warn(msg)
    raise msg
  end
end

感谢:你能让Ruby将警告视为错误吗?


0

尝试使用$DEBUG = true。这将导致至少一些警告变成错误。


在 Ruby 中?你能详细说明一下吗?我很好奇我该怎么做。 - Thilo
@Thilo 你会如何设置?可以使用 ruby --debug 或者只需 $DEBUG = true - Daniel Brockman
1
很遗憾,那样行不通。我已经处于调试模式了。我想做一些类似于警告的begin/rescue/end操作,在其中可以获取一个“警告”对象并从中获取回溯信息。 - Sean McCullough

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接