2016-06-22 4 views
0

Я пытаюсь улучшить свой файл YAML для моего проекта Vagrant. По this post, если у меня есть что-то вроде этого:Как использовать файлы YAML с Vagrant?

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

как говорится в ответе на пост

, а затем вызвать в соответствующем представлении с именем сайта в качестве параметра

так что вы не получите сразу после загрузки 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, который также подробно в оригинальном посте вы ссылаетесь

+0

Ты помог мне еще раз @ Фредерик! Спасибо тебе, друг! :) –

+0

welcome Valter - в зависимости от вашего варианта использования, другой более простой, но если у вас есть переменная в середине строки, объединение не будет работать, и потребуется разрешение параметра, например, если у вас есть строка _ ' welcome on% {site_name} - мы в сети! '_ простое соединение не будет делать параметр в определенном месте, также если у вас есть несколько переменных, лучше работать с параметром, чем присоединиться –

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

I читали о «псевдонимах», но я этого не понимал. Но с вашим примером я мог это понять. Спасибо @mudasobwa! –

Смежные вопросы