しばらくの間、私は CouchDB とのインターフェースとなる小さな Ruby ライブラリーの構築に取り組んできました。CouchDB は、HTTP インターフェースを備えたきちんとした小さな文書データベースです。主な機能は次のとおりです。
- ドキュメント オブジェクトは美化されたハッシュです
- JavaScript Map/Reduce 関数はネイティブ Ruby で記述され、S 式を使用して JavaScript に解析されます
- 複数のCouchデータベースとインターフェースできます
- Camping などのマイクロフレームワークとうまく統合する必要があります
私はこのようなことができるようにしたい:
@recipes = Recipes.all
ここで、「レシピ」は、ドキュメントに必要ないくつかのキーを定義するクラスです (クラス名は自動的に「種類」キーとして使用されます)。
しかし、困難な時期には、次のようなことをしたいと思うかもしれません。
@recipes.each do |recipe|
recipe.cost = "too much!!"
recipe.push!
end
さて、明らかにそのように「プッシュ」できるようにするには、データベースが..スコープ内のどこかにある必要があります..またはドキュメントオブジェクト自体がデータベースオブジェクトへの参照を保持する必要がありますか? ActiveRecord のような確立された ORM では、これはどのように行われますか?
そんなことはしたくありませんrecipe.push!(@couch_database_object)
。しかし、スコープを汚染するクズにはなりたくありません。
何かアドバイス?