如何在Vagrant中使用YAML文件?

时间:2016-06-22 09:06:13

标签: ruby vagrant yaml vagrantfile

我正在尝试为我的Vagrant项目改进我的YAML文件。根据{{​​3}},如果我有这样的事情:

en:
  site_name: "Site Name"
  static_pages:
    company:
      description: ! '%{site_name} is an online system'

我应该可以打印"Site Name is an online system",但我不知道如何在Vagrantfile内使用它。 我到目前为止尝试了但是我无法正确打印出来,只是这样:

%{site_name} is an online system

这就是我使用它的方式:

require 'yaml'
set = YAML.load_file(ENV['DEVOPS_HOME'] + '/vagrant/server/settings.yml')
puts set['en']['static_pages']['company']['description']

2 个答案:

答案 0 :(得分:2)

正如他们在帖子的回答中所说的那样

  

然后使用站点名称作为参数调用适当的视图

所以你在加载yaml文件后没有直接得到预期的字符串,你需要匹配参数。你可以在Vagrantfile中使用的一种方法是

require 'yaml'
set = YAML.load_file(ENV['DEVOPS_HOME'] + '/vagrant/server/settings.yml')
str = set['en']['static_pages']['company']['description']
arg = {:site_name=> set['en']['site_name']}
p str % arg

将打印出"Site Name is an online system"

另一种方法是使用mudasobwa的答案,这也在您引用的原始帖子中有详细说明

答案 1 :(得分:1)

您可能希望使用YAML aliases来实现此功能:

en:
  site_name: &site_name "Site Name" # declaring alias
  static_pages:
    company:
      description: 
        - *site_name                # reference
        - "is an online system"

后来:

puts set['en']['static_pages']['company']['description'].join(' ')