Estoy perplejo con este problema.¿Cómo lidiar con el conflicto entre ActiveSupport :: JSON y la joya JSON?
ActiveSupport::JSON
define to_json
en varios objetos centrales, al igual que la gema JSON. Sin embargo, la implementación no es la misma: la versión de ActiveSupport toma argumentos y la versión de joya JSON no.
Instalé una gema que requería la gema JSON y mi aplicación se rompió. El problema es que estoy usando to_json
en un controlador que devuelve una lista de objetos, pero quiero controlar qué atributos se devuelven.
Cuando el código en cualquier parte de mi sistema hace require 'json'
me sale este mensaje de error:
TypeError: wrong argument type Hash (expected Data)
he intentado un par de cosas que he leído en línea para solucionarlo, pero nada funcionó. Terminé reescribiendo la gema para usar ActiveSupport::JSON.decode
en lugar de JSON.parse
.
Esto funciona pero no es sostenible ... No puedo bifurcar gemas cada vez que quiero usar una gema que requiere la gema JSON.
Actualización: La mejor solución a este problema es actualizar a Rails 2.3 o superior, que lo corrigió.
¿Por qué esta pregunta marcado como "comunidad wiki"? –
No lo sé, pensé que probaría eso y vería qué hace. –
He sentido tu dolor, espero que este lío sea resuelto algún día – MatthewFord