作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个提供各种DSL方法的 ruby 。我想向我的gem用户(尤其是他们调用的gem中的DSL方法,他们的代码文件和代码行以及其他上下文)提供有用的警告消息。
例如:
# client_code.rb
foo :bar # foo is my DSL method
[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
关于ruby - Ruby : How do I find provide informative error messages from my gem using caller_locations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60640207/
我有一个提供各种DSL方法的 ruby 。我想向我的gem用户(尤其是他们调用的gem中的DSL方法,他们的代码文件和代码行以及其他上下文)提供有用的警告消息。 例如: # client_code.r
我是一名优秀的程序员,十分优秀!