gpt4 book ai didi

ruby - Ruby : How do I find provide informative error messages from my gem using caller_locations?

转载 作者:行者123 更新时间:2023-12-03 09:07:56 24 4
gpt4 key购买 nike

我有一个提供各种DSL方法的 ruby 。我想向我的gem用户(尤其是他们调用的gem中的DSL方法,他们的代码文件和代码行以及其他上下文)提供有用的警告消息。

例如:

# client_code.rb
foo :bar # foo is my DSL method

会使用以下命令向stderr输出警告:

[WARN] Unexpected option :bar to DSL method 'foo' at client_code.rb:2

我可以想象在 foo方法中可以使用 caller_locations,但是得到一个干净的解决方案使我无法比较系统路径和内容。

最佳答案

好的,在写这个问题时,我发现了一个巧妙的解决方案:Kernel#warn。它具有uplevel选项,可让您执行所需的操作。因此,在我的示例中,我将执行以下操作:

def foo(opts)
warn("Unexpected option :bar to DSL method #{__callee__}", uplevel: 1) if unexpected?(opts)
end

https://ruby-doc.org/core-2.7.0/Kernel.html#method-i-warn

关于ruby - Ruby : How do I find provide informative error messages from my gem using caller_locations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60640207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com