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