Не удается загрузить конфигурацию для рецепта 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.

Другие вопросы по тегам