Как да предам параметри на командния ред на 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