それとも、YAML ストアとして透過的に使用できるようにする、YAML から Mongo DB のようなものへのマッパーはありますか?
私の知る限り、直接ではありません。
主な問題は、Mongo DB のインターフェースがハッシュ (つまり、キーと値のペア) に基づいていることです。したがって、本質的には、YAML からハッシュへのマッパーがあるかどうかを尋ねています。YAML は任意の構造を格納できますが、ハッシュは格納できないため、答えはノーです。
ただし、オブジェクトを単純化する意思がある場合は、これを部分的に行うことができる場合があります。
class SomeObject
def initialize
@bob = 'abc'
@fred = 'cde'
end
def to_hash
h = {}
instance_variables.sort.each do |v|
h[v] = instance_variable_get(v)
end
return h
end
to_yaml のコードを見ると、to_hash メソッドと非常によく似ていることがわかります (これが私がアイデアを得たからです)。
おそらく from_hash メソッドも必要になることに注意してください。そしておそらく、オブジェクトであるインスタンス変数 (つまり、文字列やシンボルなどだけではない) を持つクラスのスキームを考え始めたいと思うでしょう。
アイテムを挿入するmongoコード:
include Mongo
db = MongoClient.new.db('test')
stuff = db.collection('stuff')
item = SomeClass.new()
... other code ...
stuff.insert(item.to_hash)
これがあなたの質問に直接答えるものではないことは承知していますが、それでも役立つことを願っています.
ジョン