Rails: ParameterFilter :: compiled_filter tenta duplicar o símbolo
Estou executando o rails3 com a gem de notificação de exceção do rails. Quando ocorre uma exceção e um email deve ser enviado, estou recebendo uma exceção da classe ParameterFilter. Encontrei o problema na fonte de trilhos e não tenho certeza da melhor maneira de prossegui
O problema ocorre em ActionDispatch :: Http :: ParameterFilter. No método compiled_filter, ocorre um erro na linha 38:key = key.dup
quandokey
é um símbolo, porque os símbolos não são duplicáveis. Aqui está a fonte:
def compiled_filter
...
elsif blocks.present?
key = key.dup
value = value.dup if value.duplicable?
blocks.each { |b| b.call(key, value) }
end
Vejo que eles só ligam paradup
emvalue
quando éduplicable
. Se eu corrigir a fonte para chamar apenasdup
emkey
quandokey
éduplicable
, então meu problema desaparece. Estou assumindo que existe uma razão pela qual o autor colocou essa condição emvalue
e nãokey
, então estou curioso para saber se alguém tem um entendimento melhor desse códig
Este erro ocorre apenas quando você adiciona um bloco aos parâmetros de filtro em application.rb. Portanto, talvez haja uma solução alternativa para o meu problema original que não exija o uso de um bloco aqui. Se você estiver interessado, veja a pergunta do meu colega de trabalhoRails: filtre dados confidenciais no parâmetro JSON dos logs
A chave para a qual este é um problema é:action
. Isso vem dos trilhos e não sei se existe alguma maneira de forçá-lo a ser uma strin
Eu registrei um bug nos trilhoshttps: //rails.lighthouseapp.com/projects/8994/tickets/6557-symbol-duplication-error-in-parameterfilter-compiled_filte e eu tenho um patch pronto que adiciona sekey.duplicable?
aokey.dup
line, estou procurando informações sobre se essa é ou não a solução cert