我正在尝试为我的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']
答案 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(' ')