Как передать параметры командной строки в capistrano

Я использую Capistrano v2.9.0.

Я запускаю эту команду:

cap deploy:tryout -S testvar=thing

и мой deploy.rb содержит это:

namespace :deploy do
    task :tryout do
        if defined? testvar
            puts "param: #{testvar}\n"
        else
            puts "no branch!\n"
        end
    end
end

Вывод "нет ветки!". Как передать значения из командной строки? Я попытался заглянуть в код и увидел options.rb, где он добавляет переданный параметр в options[:pre_vars], но это похоже на переменную экземпляра, и я не могу понять, как получить к ней доступ из моего развертывания. сценарий.


person Benubird    schedule 05.02.2014    source источник
comment
-S это опечатка? это должно быть -s (нижний регистр)   -  person Kashyap    schedule 05.02.2014
comment
Нет, согласно шапке, строчные буквы --set, прописные --set-before. Во всяком случае, я пробовал это с ними обоими.   -  person Benubird    schedule 05.02.2014
comment
Дубликат: stackoverflow.com/questions/10216841/ - - Также проверка существования переменной выглядит так: github. com/capistrano/capistrano/wiki/ -- я полагаю, что переменные, установленные в командной строке, проверяются таким же образом. Попробуйте поместить свой var в else и посмотреть, что произойдет.   -  person juanitogan    schedule 30.10.2014


Ответы (1)


Решение:

Доступ к параметрам можно получить через хэш @parent.variables, поэтому, если строка командной строки testvar=thing, то @parent.variables[:testvar] имеет значение string.

Это кажется действительно уродливым и хакерским, но это работает.

Редактировать: оказывается, он также доступен локально через variables[:testvar]

person Benubird    schedule 05.02.2014