Не удается загрузить конфигурацию для рецепта Capistrano
Дело в том, что я хочу получить параметры для моего рецепта Capistrano из консоли, поэтому, посмотрев в Google, я пришел к следующему:
task :set_repo do
set :repository, "git@github.com:#{configuration[:repo]}/MyApp.git"
set :scm_user, configuration[:repo]
end
При попытке запустить задачу я обнаружил ошибку "отсутствует метод" для хэша конфигурации. И после другого поиска в Google я обнаружил, что мне нужно загрузить конфигурацию из Capistrano, поэтому я добавил этот код:
configuration = Capistrano::Configuration.respond_to?(:instance) ?
Capistrano::Configuration.instance(true) :
Capistrano.configuration(:must_exist)
Но это вызывает ошибку LoadError с сообщением "Пожалуйста, запросите этот файл из рецепта Capistrano". Я пытался запросить модуль capistrano/configuration, но продолжаю получать ту же ошибку.
Любая помощь с благодарностью.
2 ответа
Ну, я нашел способ обойтись без использования конфигурации вообще.
Кажется, что вы можете установить несколько задач вне пространства имен, как это
desc "Use UserA's git repository"
task :usera do
set :repository, "git@github.com:UserA/MyApp.git"
set :scm_user, "UserA"
end
desc "Use UserB's git repository"
task :userb do
set :repository, "git@github.com:UserB/MyApp.git"
set :scm_user, "UserB"
end
и после этого вы можете просто вызвать задачу развертывания, предварительно добавив задачу консоли в консоль. Например:
$ cap usera deploy
Так что это вызовет сначала вашу задачу usera, а затем вашу задачу развертывания.
Вы можете установить переменные capistano из командной строки.
Например, приведенный ниже вызов установит для переменной capistrano scm_user значение "userA", а для хранилища переменных capistrano значение "http://myrepo.com/blah":
cap deploy -s scm_user="userA" -s repository="http://myrepo.com/blah"
Это имеет тот же эффект, что и
set :scm_user, 'userA'
set :repository, 'http://myrepo.com/blah'
в верхней части вашего файла deploy.rb.