我正在寻找一个 Ruby ORM 来替换 ActiveRecord。我一直在看 Sequel 和 DataMapper。它们看起来相当不错,但它们似乎都没有做基本的事情:当你不需要时,不要将所有内容加载到内存中。
我的意思是我已经在 ActiveRecord 和 Sequel 上尝试了以下(或等效),并且有很多行:
posts.each { |p| puts p }
他们俩都在记忆中发疯。他们似乎将所有内容加载到内存中,而不是在需要时获取内容。我find_in_batches
在 ActiveRecord 中使用了,但这不是一个可接受的解决方案:
- ActiveRecord 不是一个可接受的解决方案,因为我们遇到了太多问题。
为什么我的代码应该知道分页机制?我很高兴在某处配置页面大小,仅此而已。您
find_in_batches
需要执行以下操作:post.find_in_batches { |批次| 批处理每个 { |p| 放 p } }
但这应该是透明的。
那么是否有可靠的 Ruby ORM 可以正确提取?
更新:
正如 Sergio 所提到的,在 Rails 3 中,您可以使用find_each
我想要的。然而,由于 ActiveRecord 不是一个选项,除非有人真的能说服我使用它,问题是:
- 哪些 ORM 支持 find_each 的等价物?
- 怎么做?
- 为什么我们需要一个
find_each
,而find
应该这样做,不应该吗?