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