Делая API для Бинстолка, столкнулся с большой тупостью ActiveResource, после которой даже подумал перейти на RestClient. Оказалось что ARes не умеет принимать вложенные массивы, или массивы, в которых содержатся символы или цифры. Он умеет загружать только плоские массивы со строками и ничего больше.

Например такой код выбросит исключение:

# changeset объект класса ActiveResource
changeset.load {:files => [["/trunk/bla", "add"], ["/trunk/ble", "delete"]]}
# => ArgumentError: expected an attributes Hash, got ["/trunk/bla", "add"]

То же самое с символами и числами. Простой массив с числами передать ARes не получится.

Абсурд полный! Особенно для библиотеки, которая вроде как перевалила за вторую версию.

В общем я запостил два пачта (под одним тикетом) на лайтхаус: Support for loading nested arrays, numbers and symbols in ActiveResource.

Буду благодарен за плюсики. Сделаем мир лучше, спасём бегемотов в Африке.

2 комментария:

  1. MaxD:

    Спасибо за интересный пост. Я тоже когда разбирался с ARes заметил немало странностей в нем. Теперь я знаю ещё одну :)

    Скорее всего сложившаяся ситуация связано с тем что его не так часто используют, иначе бы уже ко 2 версии его «отшлифовали» и исправили такие нелепые ошибки.

  2. Илья Сабанин:

    Угу. До сих пор нету поддержки singular resources. Вообще никакой. А патчи отсылать толку нет, никто на них внимания не обращает.

Извините, но комментарии для этой статьи уже закрыты.