Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从模板生成虚张声势YAML?_Yaml_Swagger_Swagger 2.0 - Fatal编程技术网

从模板生成虚张声势YAML?

从模板生成虚张声势YAML?,yaml,swagger,swagger-2.0,Yaml,Swagger,Swagger 2.0,我试图找到一个解决方案,其中我有一个带有变量的YAML模板和一个带有变量定义的配置文件。我在YAML模板上运行这个工具,它将为每个配置文件生成一个YAML文件 老实说,我很可能没有使用正确的关键字在线搜索。但是,如果有人有任何建议或知道这样一个工具来实现这一点,我们将不胜感激:)。您可以使用您想要的任何模板库来实现这一点,前提是您的替换相当简单。例如,您可以使用Ruby标准库中的库: #/usr/bin/env ruby 需要“雇员再培训局” 需要“yaml” def渲染(模板、数据) ERB.

我试图找到一个解决方案,其中我有一个带有变量的YAML模板和一个带有变量定义的配置文件。我在YAML模板上运行这个工具,它将为每个配置文件生成一个YAML文件


老实说,我很可能没有使用正确的关键字在线搜索。但是,如果有人有任何建议或知道这样一个工具来实现这一点,我们将不胜感激:)。

您可以使用您想要的任何模板库来实现这一点,前提是您的替换相当简单。例如,您可以使用Ruby标准库中的库:

#/usr/bin/env ruby
需要“雇员再培训局”
需要“yaml”
def渲染(模板、数据)
ERB.new(模板).result(绑定)
结束
模板=ARGF.file.read
ARGF.skip
直到ARGF关闭?
放置“[#{ARGF.filename}]”
数据=ARGF.file.read
ARGF.skip
放置渲染(模板,YAML.load(数据))
放
结束
用法
config-1.yml
config-2.yml
template.yml.erb
: 编辑 关于嵌套在顶级映射键下的数据的问题:

---
Person:
  first_name: Yukihiro
  last_name: Matsumoto
当您使用上述数据执行
YAML.load(data)
操作时,而不是生成如下所示的哈希:

{ "first_name" => "Yukihiro",
  "last_name" => "Matsumoto" }
{ "Person" => {
    "first_name" => "Yukihiro",
    "last_name"  => "Matsumoto"
  }
}
…它看起来是这样的:

{ "first_name" => "Yukihiro",
  "last_name" => "Matsumoto" }
{ "Person" => {
    "first_name" => "Yukihiro",
    "last_name"  => "Matsumoto"
  }
}
因此,要获得
名字和
姓氏
,只需执行
对象[“个人”]


通常情况下,您的招摇过市是使用代码注释自动生成的。你能详细解释一下你的用例吗?@Charlie在yaml文件中说,我有一个主机名,需要根据项目的当前状态进行更改。这符合使用代码注释的描述吗?如果您没有将say Swagger UI指向自动生成的代码,那么您可以执行此处建议的操作:这有帮助吗?有趣的解决方案!我将尝试一下,看看它是否能满足我的需要。:)您的示例不起作用,我一直在尝试将其拼凑在一起,但不断出现以下错误:(erb):2:in
render:main:Object(NameError)的未定义局部变量或方法from/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/erb.rb:849:in
eval'from/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/erb.rb:849:in
result'from./yamGen.rb:6:in
render'from./yamGen.rb:21:in
“对不起,我应该有
数据[“名字”]
而不是
名字
。我已经更新了我的答案。谢谢你,乔丹!快速提问,如果数据是迭代的,我将如何访问它。例如,若配置文件是“人物:名字:yukihiro姓氏:matsumoto”,那个么“迭代”是什么意思还不清楚。你们能编辑你们的问题来包含一个YAML的例子吗?
{ "first_name" => "Yukihiro",
  "last_name" => "Matsumoto" }
{ "Person" => {
    "first_name" => "Yukihiro",
    "last_name"  => "Matsumoto"
  }
}
until ARGF.closed?
  puts "[#{ARGF.filename}]"
  data = YAML.load(ARGF.file.read)
  ARGF.skip
  puts render(template, data["Person"])
  puts
end