Я столкнулся с этой проблемой.
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 или более поздней версии, которая исправила его.