Я ищу Ruby ORM для замены ActiveRecord. Я смотрел Sequel и DataMapper. Они выглядят неплохо, однако ни один из них, похоже, не выполняет базовых функций: не загружает все в память, когда она вам не нужна.
Я имею в виду, что я пробовал следующее (или эквивалент) в ActiveRecord и Sequel на таблице с большим количеством строк:
posts.each { |p| puts p }
Оба они сходят с ума по памяти. Кажется, что они загружают все в память, а не загружают данные, когда это необходимо. Я использовал find_in_batches
в ActiveRecord, но это неприемлемое решение:
Почему мой код должен знать механизм подкачки? Я счастлив где-то настроить размер страницы, но это все. С помощью find_in_batches
вам нужно сделать что-то вроде:
post.find_in_batches {| batch | batch.each {| p | put p}}
Но это должно быть прозрачно.
Так есть ли где-нибудь надежный Ruby ORM, который правильно выполняет выборку?
Обновление:
Как упоминал Серджио, в Rails 3 вы можете использовать find_each
, что именно то, что я хочу.Однако, поскольку ActiveRecord не вариант, кроме тех случаев, когда кто-то действительно может убедить меня использовать его, возникают следующие вопросы:
find_each
, а find
должен это делать, не так ли?