我想创建一个gem来过滤Ruby中的警告,并且我想为“语法”和“运行时”警告执行此操作。我很努力工作,如何它可以过滤语法级别警告(或者如果可能的话)过滤红宝石警告
例如,如果我运行下面的脚本
# myscript.rb
@blah
与ruby -w myscript.rb
myscript.rb:1: warning: possibly useless use of a variable in void context
myscript.rb:1: warning: instance variable @blah not initialized
现在,想象这是更大项目的一部分。我想从myscript中滤除任何警告。我会如何去做这件事?运行时错误将很容易过滤使用ActiveSupport中的silence_warnings样式代码https://github.com/rails/rails/blob/3be9a34e78835a8dafc3438f60afb412613773b9/activesupport/lib/active_support/core_ext/kernel/reporting.rb
但我不知道如何(或者如果可能的话)钩入Rubys语法级别的警告,因为它似乎是他们会运行之前你有机会猴子修补任何东西。我所能想到的是将ruby脚本包装在另一个将过滤所有警告的进程中。例如:
myfilterprogram ruby -w myscript.rb
然后它会捕获任何打印到STDERR并相应地过滤的东西。
这是个好主意..我想最好做的是运行测试套件的应用程序,(例如'bundle exec rake'),所以我将不得不看看我的优秀建议是否能在这些范围内工作。我想如果有一种方法可以通过编程的方式调用rspec来启动测试套件,那么它会很好。在此期间,我会将此标记为正确的!谢谢 :) –