ActiveRecord を置き換える Ruby ORM を探しています。Sequel と DataMapper を見てきました。それらは非常によく見えますが、必要のないときにすべてをメモリにロードしないという基本的なことを行っているようには見えません。
つまり、多くの行を持つテーブルの ActiveRecord と Sequel で次の (または同等の) ことを試しました。
posts.each { |p| puts p }
二人とも記憶に夢中です。必要に応じてフェッチするのではなく、すべてをメモリにロードするようです。ActiveRecord でを使用しfind_in_batches
ましたが、受け入れられる解決策ではありません。
- 問題が多すぎるため、ActiveRecord は受け入れられるソリューションではありません。
コードでページング メカニズムを認識する必要があるのはなぜですか? ページのサイズをどこかに設定できてうれしいですが、それだけです。次のようなこと
find_in_batches
をする必要があります。post.find_in_batches { |バッチ| batch.each { |p| p を置きます } }
しかし、それは透明であるべきです。
では、フェッチを適切に行う信頼できる Ruby ORM はどこかにありますか?
アップデート:
Sergioが述べたように、Rails 3では、find_each
まさに私が望むものを使用できます。ただし、ActiveRecord はオプションではないため、誰かが本当にそれを使用するよう説得できる場合を除き、質問は次のとおりです。
- find_each と同等の機能をサポートする ORM はどれですか?
- どうやってするの?
find_each
whileが必要なのはなぜfind
ですか?