ruby允许您将警告视为错误吗?
我这么做的一个原因是为了确保,如果移除一行代码意味着出现警告,我可以选择确保这个突变体被杀死。
发布于 2009-03-19 14:32:38
不幸的是,没有真正的方法来做到这一点,至少在大多数版本的Ruby上(可能存在变体),缺乏对程序输出的监控,并在出现标准错误警告时中止它。原因如下:
do_something if 'string',是通过source/parse.c)rb_warn打印出来的,这会使事情变得更糟,还有一个额外的rb_warning本机方法,如果指定了-w或-v,Ruby可以使用该方法来记录警告。因此,如果您只需要对应用程序代码调用Kernel.warn**.生成的警告采取操作,那么只需重新定义 Kernel.warn否则,您只有两个选项**:
source/error.c以在rb_warn和rb_warning (以及rb_warn_m?)中退出,并重新构建: warning:',然后在匹配时中止它<代码>H250<代码>G251发布于 2019-06-08 08:55:42
您最终可以通过覆盖Warning.warn来实现这一点,如下所示
module Warning
def warn(msg)
raise msg
end
end这会将警告转换为异常。该解决方案至少从2.4分支开始工作。
发布于 2009-04-14 18:46:44
您还可以使用DTrace,并拦截对rb_warn和rb_warning的调用,尽管这不会产生您可以从某个地方挽救的异常。相反,它只是将它们放在您可以轻松记录它们的地方。
https://stackoverflow.com/questions/660737
复制相似问题