Загрузка переменных из отдельного файла для Rake

#ruby #rake

#ruby #rake

Вопрос:

Я пытаюсь разобраться в Ruby / Rake. Я подумал, что было бы хорошей идеей выделить некоторую конфигурацию из файла Rakefile в файл под названием configuration. Этот файл имеет следующее содержимое:

 email="nobody@nowhere.com"
password="somepassword"
proxy_server="someproxy.com:8080"
puts "config loaded"
  

Затем в моем Rakefile я загружаю файл конфигурации с помощью

 load 'configuration'
  

и используйте переменные, определенные позже, например:

 task :dummy do
    sh = "echo #{proxy_server}" 
end
  

Но затем я получаю сообщение об ошибке, в котором говорится, что переменная не определена:

 rake aborted!
undefined local variable or method `proxy_server' for #<Object:0xb783595c>
  

Как я могу получить доступ к переменным конфигурации, определенным в файле конфигурации?

Ответ №1:

Видимость: переменные из файла конфигурации не видны в скрипте, который его выполнил. Вам нужно установить общий контекст, например, используя глобальные переменные (даже если глобальные — это зло :-)), например:

 $proxy_server="someproxy.com:8080"
  

и затем

 task :dummy do
    sh = "echo #{$proxy_server}" 
end
  

Но поскольку файлы rake сами по себе являются Ruby, зачем вообще использовать отдельный файл конфигурации? Если вам нужно изменить конфигурацию, вы также можете отредактировать файл rake.