А вообще, если есть уже готовое рельсовое приложение и нужно к нему написать API, то я бы не стал заморачиваться с Grape, Sinatra или еще чем-то, а делал бы этот API частью приложение.
Для view, часто используют джем rabl в связке с Grape. Я как-то делал тестовый проект, с описанием api для puzzless.com
Использовал grape, rack, rabl, AR. [source]
Cтоит заметить, что это проект с открытым исходным кодом (Rails 4), так что желающие могут помочь или просто посмотреть как все сделано: github.com/freetonik/develop.re
То ли я неправильно понял принцип работы фильтров, то ли они не работают. Я отменил на странице фильтров интересные мне теги, но на главной странице по прежнему отображаются все записи
Мы как раз переводим сейчас наши Rails проекты с Chef на Ansible. Базовые вещи в Ansible делаются действительно проще и понятнее нежели в случаи с Chef.
Вы знаете, мне их решение из cookbook, на которое вы ссылаетесь, не кажется таким уж хорошим. По сути, они тоже делают генерацию случайного числа для каждого документа, после чего, для вывода случайной записи, генерируют новое случайное число и выбирают те записи у которых это число больше (или меньше, это без разницы). Это может привести к ситуации, что число, которое мы генерируем на лету, очень большое или очень маленькое и в ответ мы просто не получим то количество записей, на которое рассчитываем.
В моем варианте, я позволяю себе использовать тяжелую для базы операцию skip, но это дает гарантии того, что мы получим в ответ то количество записей, которое ожидаем.
Собственно, у каждого из решений есть свои минусы, которые нужно учитывать, при выборе.
да, вы правы, это сделает выборку только чуть более случайной и избавит именно от той проблемы, что рядом окажутся, например товары одной категории или с одинаковой ценой. Собственно, пример, который я описал в статье
Можно написать вот так:
А вообще, если есть уже готовое рельсовое приложение и нужно к нему написать API, то я бы не стал заморачиваться с Grape, Sinatra или еще чем-то, а делал бы этот API частью приложение.
Использовал grape, rack, rabl, AR. [source]
В моем варианте, я позволяю себе использовать тяжелую для базы операцию skip, но это дает гарантии того, что мы получим в ответ то количество записей, которое ожидаем.
Собственно, у каждого из решений есть свои минусы, которые нужно учитывать, при выборе.