conf si が erlang term 1として記述されている erlang アプリケーション (rabbitmq) の構成ファイルを作成しようとしています。
私の属性は ruby ハッシュです。このハッシュをきれいに印刷された erlang 用語に変換する方法を知っていますか?
conf si が erlang term 1として記述されている erlang アプリケーション (rabbitmq) の構成ファイルを作成しようとしています。
私の属性は ruby ハッシュです。このハッシュをきれいに印刷された erlang 用語に変換する方法を知っていますか?
私が自分でこれをしなければならなかった場合、おそらく次のようなものです:
def to_erl(o)
case o
when Hash
'[' +
o.map {|(k,v)|
"{#{k}, #{to_erl v}}"
}.join(",\n") +
']'
when Array
'[' + o.map{|v| to_erl(v)}.join(",") +']'
when TrueClass then "true"
when FalseClass then "false"
when Integer then o.to_s
when String then o
when Symbol then o.to_s
# ... and whatever else you can think of
else
raise "Don't know how to erlify #{o}"
end
end
...しかし、ルビーとアーランの間でシリアライズしなければならないオープンソースプロジェクトから盗むことができる素晴らしいコードがいくつかあるに違いありません。
へのシリアル化ではerlang
、BERT がデファクトです (Binary Erlang 用語)。Ruby ハッシュから BERT に至るライブラリはたくさんあるようです。プレーンテキストの erlang 用語を提供するものは見たことがありません。
これはシェフのレシピのためのものなので、収束時にあまり多くの ruby の依存関係を台無しにしないことをお勧めします。シェフの属性を呼び出す#to_hash
と、得られるものは簡単で(オブジェクトはなく、数値/ブール/文字列/配列とハッシュだけです)、自家製のコードを少し使用して管理できます。