如何在 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 原文中也有详细说明
我正在尝试为我的 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 原文中也有详细说明