如何在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