如何在 Vagrant 中使用 YAML 文件?

How to use YAML files with Vagrant?

我正在尝试为我的 Vagrant 项目改进我的 YAML 文件。根据this post,如果我有这样的东西:

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']

您可能想使用 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(' ')

正如他们在 post

的回答中所说

and then call in the appropriate view with the site name as a parameter

所以你加载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 的答案,该答案在您参考的 post 原文中也有详细说明