#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.