gpt4 book ai didi

ruby - Rails:ParameterFilter::compiled_filter 尝试复制符号

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:51 24 4
gpt4 key购买 nike

我正在使用 rails exception-notifier gem 运行 rails3。当发生异常并且应该发送电子邮件时,我从 ParameterFilter 类中得到一个异常。我在 Rails 源代码中发现了问题,但我不确定继续的最佳方式。

问题出现在ActionDispatch::Http::ParameterFilter。在compiled_filter方法中,第38行报错:key = key.dup when key is a symbol,因为symbols是不可复制的。这是来源:

def compiled_filter
...
elsif blocks.present?
key = key.dup
value = value.dup if value.duplicable?
blocks.each { |b| b.call(key, value) }
end

我看到他们只在 valueduplicable 时调用 dup。如果我将源修补为仅在 keyduplicable 时在 key 上调用 dup,那么我的问题就会消失。我假设作者将条件放在 value 而不是 key 上是有原因的,所以我很好奇是否有人对这段代码有更好的理解.

此错误仅在您将 block 添加到 application.rb 中的过滤器参数时发生。因此,对于我的原始问题,也许有一个不需要在此处使用 block 的解决方法。如果您有兴趣,请参阅我同事的问题 Rails: Filter sensitive data in JSON parameter from logs

这是一个问题的关键是:action。这来自 rails,我不知道是否有任何方法可以强制它成为一个字符串。

我提交了一个 Rails 错误 https://rails.lighthouseapp.com/projects/8994/tickets/6557-symbol-duplication-error-in-parameterfilter-compiled_filter我已经准备好一个补丁,可以将 if key.duplicable? 添加到 key.dup 行,我正在寻找关于这是否是正确解决方案的意见。

最佳答案

这看起来像是 Rails 中的一个错误。键应该是字符串而不是符号,或者 dup 应该受 duplicable? 保护。

您应该在 https://rails.lighthouseapp.com/ 提交错误,如果可能的话包括一个最小的测试用例。

关于ruby - Rails:ParameterFilter::compiled_filter 尝试复制符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265431/

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