Estoy ejecutando rails3 con rails exception-notifier gem. Cuando se produce una excepción y se debe enviar un correo electrónico, recibo una excepción de la clase ParameterFilter. He encontrado el problema en la fuente de los rieles, y no estoy seguro de cuál es la mejor manera de proceder.Rails: ParameterFilter :: compiled_filter intenta duplicar el símbolo
El problema ocurre en ActionDispatch :: Http :: ParameterFilter. En el método compiled_filter, se produce un error en la línea 38: key = key.dup
cuando key
es un símbolo, porque los símbolos no son duplicables. Aquí está la fuente:
def compiled_filter
...
elsif blocks.present?
key = key.dup
value = value.dup if value.duplicable?
blocks.each { |b| b.call(key, value) }
end
veo que sólo llaman dup
en value
cuando es duplicable
. Si parcheo la fuente para que solo llame al dup
en key
cuando key
es duplicable
, entonces mi problema desaparece. Supongo que hay una razón por la cual el autor puso esa condición en value
y no en key
, por lo que tengo curiosidad si alguien entiende mejor este código.
Este error solo se produce cuando agrega un bloque a sus parámetros de filtro en application.rb. Entonces, tal vez haya una solución alternativa para mi problema original que no requiere el uso de un bloque aquí. Si está interesado, consulte la pregunta de mi compañero de trabajo Rails: Filter sensitive data in JSON parameter from logs
La clave por la cual este es un problema es :action
. Esto proviene de los rieles y no sé si hay alguna manera de forzarlo a ser una cadena en su lugar.
I presentado un error rieles https://rails.lighthouseapp.com/projects/8994/tickets/6557-symbol-duplication-error-in-parameterfilter-compiled_filter y tengo un parche que añade listo si key.duplicable?
a la línea key.dup
, estoy buscando para la entrada de si esa es la solución correcta.
¿Alguna vez recibió una respuesta a esto? –