更新。关于仅将参数传递给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