and*_*ell 5 ruby symbols actionmailer actiondispatch ruby-on-rails-3
我正在运行带有rails exception-notifier gem的rails3.当发生异常,并且应该发送电子邮件时,我从ParameterFilter类中获得异常.我在rails源中发现了这个问题,我不确定最好的方法.
问题发生在ActionDispatch :: Http :: ParameterFilter中.在compiled_filter方法中,第38行发生错误:key = key.dupwhen key是符号,因为符号不可复制.这是来源:
def compiled_filter
...
elsif blocks.present?
key = key.dup
value = value.dup if value.duplicable?
blocks.each { |b| b.call(key, value) }
end
Run Code Online (Sandbox Code Playgroud)
我看到他们只是在它dup出现value时才会打电话duplicable.如果我修补源只调用dup的key时候key是duplicable,那么我的问题消失.我假设有一个理由为什么作者提出了这个条件value而不是key,所以我很好奇是否有人对这个代码有更好的理解.
只有在application.rb中向过滤器参数添加块时才会出现此错误.所以,也许我的原始问题有一个解决方法,不需要在这里使用块.如果您有兴趣,请参阅我的同事的问题Rails:从日志中过滤JSON参数中的敏感数据
这是一个问题的关键是:action.这来自rails,我不知道是否有办法强迫它成为一个字符串.
我提交了一个rails bug https://rails.lighthouseapp.com/projects/8994/tickets/6557-symbol-duplication-error-in-parameterfilter-compiled_filter我有一个准备好的补丁,如果key.duplicable?到key.dup线,我是寻找关于这是否是正确解决方案的输入.
这看起来像是 Rails 中的一个错误。要么密钥应该是字符串而不是符号,要么dup应该受 保护duplicable?。
您应该在https://rails.lighthouseapp.com/上提交错误,如果可能的话,包括一个最小的测试用例。
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |