Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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
Ruby 如何与Vagrant一起使用YAML文件?_Ruby_Vagrant_Yaml_Vagrantfile - Fatal编程技术网

Ruby 如何与Vagrant一起使用YAML文件?

Ruby 如何与Vagrant一起使用YAML文件?,ruby,vagrant,yaml,vagrantfile,Ruby,Vagrant,Yaml,Vagrantfile,我正在为我的流浪者项目改进我的YAML文件。根据,如果我有这样的东西: en: site_name: "Site Name" static_pages: company: description: ! '%{site_name} is an online system' 我应该能够打印“站点名称是一个在线系统”,但我不知道如何在我的文件中使用它。 到目前为止,我已经尝试过了,但无法正确打印出来,仅此而已: %{site_name} is an online syst

我正在为我的流浪者项目改进我的YAML文件。根据,如果我有这样的东西:

en:
  site_name: "Site Name"
  static_pages:
    company:
      description: ! '%{site_name} is an online system'
我应该能够打印
“站点名称是一个在线系统”
,但我不知道如何在我的
文件中使用它。
到目前为止,我已经尝试过了,但无法正确打印出来,仅此而已:

%{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']
您可能希望使用来实现此功能:

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(' ')
您可能希望使用来实现此功能:

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(' ')

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

然后以站点名称作为参数调用相应的视图

因此,在加载yaml文件后,您不会直接获得预期的字符串,您需要匹配参数。你可以在你的流浪汉档案中处理这个问题的一种方法是

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
将打印出“站点名称是一个在线系统”


另一种方法是使用mudasobwa的答案,该答案也在您引用的原始帖子中详细说明,正如他们在帖子的答案中所说的那样

然后以站点名称作为参数调用相应的视图

因此,在加载yaml文件后,您不会直接获得预期的字符串,您需要匹配参数。你可以在你的流浪汉档案中处理这个问题的一种方法是

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
将打印出“站点名称是一个在线系统”


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

您再次帮助了我@Frédéric!谢谢你,伙计!:)欢迎Valter -根据您的用例,另一个更简单,但是如果在字符串中间有变量,则连接将不起作用,并且需要参数的解析,例如,如果您在“%{SITEYNAME}”上有字符串“欢迎”,我们就在线了!简单的连接不会使参数位于特定位置,而且如果您有多个变量,则使用参数可能比使用连接更好您再次帮助了我@Frédéric!谢谢你,伙计!:)欢迎Valter -根据您的用例,另一个更简单,但是如果在字符串中间有变量,则连接将不起作用,并且需要参数的解析,例如,如果您在“%{SITEYNAME}”上有字符串“欢迎”,我们就在线了!简单的联接不会使参数位于特定位置,而且如果您有多个变量,使用参数可能比使用联接更好。我已经读过关于别名的内容,但我没有得到它。但以你为例,我能理解。谢谢@mudasobwa!我读过关于别名的文章,但我没有读到。但以你为例,我能理解。谢谢@mudasobwa!