更新。關於僅將參數傳遞給Capistrano 3任務。
我知道這個問題是相當古老的,但當搜索傳遞參數給Capistrano任務時,仍然會首先在Google上彈出。
cap test:parameter -s branch=master
輸出:
cap aborted!
OptionParser::AmbiguousOption: ambiguous option: -s
OptionParser::InvalidOption: invalid option: s
和遺憾的是,在你浪費你的時間嘗試它只是結果要像下面由傑米·薩瑟蘭提供的夢幻般的答案是不再與Capistrano的3有效
cap test:parameter -S branch=master
輸出:
invalid option: -S
對Capistrano的3有效答案由@senz和布拉德·德懷爾提供您可以通過點擊此鏈接金髮現: Capistrano 3 pulling command line arguments
爲了完整看到下面的代碼,找出大約兩個選項,你有。
第一種選擇:
就如同使用普通哈希可以重複使用的鍵和值任務:
desc "This task accepts optional parameters"
task :task_with_params, :first_param, :second_param do |task_name, parameter|
run_locally do
puts "Task name: #{task_name}"
puts "First parameter: #{parameter[:first_param]}"
puts "Second parameter: #{parameter[:second_param]}"
end
end
確保有,當你調用帽參數之間沒有空格:
cap production task_with_params[one,two]
第二個選項:
當你調用任何任務,您可以指定環境變量,然後從代碼中調用它們:
set :first_param, ENV['first_env'] || 'first default'
set :second_param, ENV['second_env'] || 'second default'
desc "This task accepts optional parameters"
task :task_with_env_params do
run_locally do
puts "First parameter: #{fetch(:first_param)}"
puts "Second parameter: #{fetch(:second_param)}"
end
end
要分配環境變量,調用帽狀波紋管:
cap production task_with_env_params first_env=one second_env=two
希望,將節省你有一段時間。
嘿,我希望你不會忽視我們的答案。請至少評論他們。 :) – deadrunk 2012-04-27 09:55:08