如何在CHEF中创建漂亮的json(ruby)

你会如何制作具有人类可读性json的erb模板?如何在CHEF中创建漂亮的json(ruby)

下面的代码工作,但它是一个平坦的JSON文件

default.rb

default['foo']['bar'] = { :herp => 'true', :derp => 42 } 

recipe.rb

template "foo.json" do 

source 'foo.json.erb'

variables :settings => node['foo']['bar'].to_json

action :create

end

foo.json.erb

<%= @settings %> 

同类SO问题
Chef and ruby templates - how to loop though key value pairs?
How can I "pretty" format my JSON output in Ruby on Rails?

回答:

正如指出的this SO Answer .erb模板HTML和XML是伟大的,但不利于JSON。

幸运的是,厨师用其own json library这对于这一点使用.to_json_pretty

在IRC @coderanger支持,指出,你可以使用这个库右侧的食谱里。 This article shows more extensively如何在食谱中使用厨师助手。

default.rb

# if ['foo']['bar'] is null, to_json_pretty() will error 

default['foo']['bar'] = {}

配方/ foo.rb

pretty_settings = Chef::JSONCompat.to_json_pretty(node['foo']['bar']) 

template "foo.json" do

source 'foo.json.erb'

variables :settings => pretty_settings

action :create

end


或者更简洁,通过因人而异

default.rb指出

# if ['foo']['bar'] is null, to_json_pretty() will error 

default['foo']['bar'] = {}

配方/ foo.rb

template "foo.json" do 

source 'foo.json.erb'

variables :settings => node['foo']['bar']

action :create

end

模板/ foo.json.erb

<%= Chef::JSONCompat.to_json_pretty(@settings) %> 

回答:

像这样的事情也将工作:

file "/var/my-file.json" do 

content Chef::JSONCompat.to_json_pretty(node['foo']['bar'].to_hash)

end

以上是 如何在CHEF中创建漂亮的json(ruby) 的全部内容, 来源链接: utcz.com/qa/261644.html

回到顶部