0

conf si が erlang term 1として記述されている erlang アプリケーション (rabbitmq) の構成ファイルを作成しようとしています。

私の属性は ruby​​ ハッシュです。このハッシュをきれいに印刷された erlang 用語に変換する方法を知っていますか?

4

1 に答える 1

1

私が自分でこれをしなければならなかった場合、おそらく次のようなものです:

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 と、得られるものは簡単で(オブジェクトはなく、数値/ブール/文字列/配列とハッシュだけです)、自家製のコードを少し使用して管理できます。

于 2013-01-25T10:33:24.660 に答える