Я в тупике с этой проблемой.
ActiveSupport::JSON
определяет to_json
для различных основных объектов, как и гем JSON. Однако реализация отличается — версия ActiveSupport принимает аргументы, а версия JSON gem — нет.
Я установил гем, для которого требовался гем JSON, и мое приложение сломалось. Проблема в том, что я использую to_json
в контроллере, который возвращает список объектов, но я хочу контролировать, какие атрибуты возвращаются.
Когда код где-либо в моей системе делает require 'json'
, я получаю это сообщение об ошибке:
TypeError: wrong argument type Hash (expected Data)
Я пробовал пару вещей, которые я читал в Интернете, чтобы исправить это, но ничего не получалось. В итоге я переписал гем, чтобы использовать ActiveSupport::JSON.decode
вместо JSON.parse
.
Это работает, но неустойчиво... Я не могу разветвлять драгоценные камни каждый раз, когда хочу использовать драгоценный камень, для которого требуется драгоценный камень JSON.
Обновление: лучшим решением этой проблемы является обновление до Rails 2.3 или более поздней версии, которое исправило ее.