私は以下のルビーハッシュを持っています。rubyハッシュをlogstash設定ファイルにマップする
config = {
'output' => {
'elasticsearch' => {
'hosts' => ['localhost:9200']
}
}
}
Logstash設定ファイル(https://www.elastic.co/guide/en/logstash/current/configuration.html)として表現しようとしています。この場合、これに似たものがあります。
output {
elasticsearch { hosts => ["localhost:9200"] }
}
私は近いマップを使用してみましたが、「elasticsearchは」「elasticsearch」と「ホスト」が引用されてはならない「=>」持っているべきではありません。
puts config.map{|k, v| "#{k} #{v}"}.join('&')
output {"elasticsearch"=>{"hosts"=>["localhost:9200"]}}
私はまた、JSONに変換しGSUBを使用して試してみたが、この場合には、私は、文字列と「出力」と「elasticsearchは」クォートするべきではないインデント解除する必要があります。
puts JSON.pretty_generate(config).gsub(/^[{}]$/, "")
.gsub(": {", " {")
.gsub(": ", " => ")[1..-2]
"output" {
"elasticsearch" {
"hosts" => [
"localhost:9200"
]
}
}
各実装は近いうちに少しずれていますが、これを達成する簡単な方法はありますか?
はいこれがトリックでした!本当にありがとう。 –