Je suis perplexe avec ce problème.Comment gérez-vous le conflit entre ActiveSupport :: JSON et la gemme JSON?
ActiveSupport::JSON
définit to_json
sur divers objets de base, ainsi que la gemme JSON. Cependant, l'implémentation n'est pas la même - la version ActiveSupport prend des arguments et la version gem JSON ne le fait pas.
J'ai installé une gemme qui nécessitait la gemme JSON et mon application s'est brisée. Le problème est que j'utilise to_json
dans un contrôleur qui renvoie une liste d'objets, mais je veux contrôler quels attributs sont retournés.
Lorsque le code n'importe où dans mon système ne require 'json'
je reçois ce message d'erreur:
TypeError: wrong argument type Hash (expected Data)
J'ai essayé quelques choses que je lis en ligne pour le corriger, mais rien ne fonctionnait. J'ai fini par réécrire la gemme pour utiliser ActiveSupport::JSON.decode
au lieu de JSON.parse
.
Cela fonctionne, mais ce n'est pas durable ... Je ne peux pas forcer des gemmes chaque fois que je veux utiliser une gemme qui nécessite la gemme JSON.
Mise à jour: La meilleure solution de ce problème consiste à mettre à niveau vers Rails 2.3 ou version ultérieure, qui l'a corrigé.
Pourquoi cette question marquée comme « communauté wiki »? –
Je ne sais pas, j'ai juste pensé que j'essaierais ça et que je verrais ce que ça fait. –
J'ai senti votre douleur, j'espère que ce désordre sera trié un jour – MatthewFord