【问题标题】:Getting stack trace info for a ruby warning获取 ruby​​ 警告的堆栈跟踪信息
【发布时间】:2021-12-06 12:35:41
【问题描述】:

我在 ruby​​ 1.9 中遇到了一些奇怪的 UTF 字符串错误。 ruby 经常会抱怨这样的事情:

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

我希望能够在警告中显示完整的堆栈跟踪,或者应用某种可以覆盖默认警告功能的猴子补丁。我该怎么做?

【问题讨论】:

  • 你的警告中不应该默认显示文件和行号吗?

标签: ruby utf-8 warnings stack-trace ruby-1.9


【解决方案1】:

试试$DEBUG = true。这至少会导致一些警告变成错误。

【讨论】:

  • 在红宝石中?你能详细说明吗?我很好奇我会怎么做。
  • @Thilo 你是怎么设置的? ruby --debug$DEBUG = true
  • 不幸的是,这行不通。我已经处于调试模式。我想做一些像开始/救援/结束这样的警告,我可以抓住一个“警告”对象并从中获取回溯
【解决方案2】:

如果警告来自 Ruby 代码(而不是原生 C),您可以覆盖 Warning#warn,然后警告变成异常您当然会得到回溯:

module Warning
  def warn(msg)
    raise msg
  end
end

感谢:Can you ask ruby to treat warnings as errors?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多