2

私の質問は、ある Capistrano タスクを別のタスクから呼び出すにはどうすればよいですか? に似ています。

私が望む余分なことは、fooから呼び出すときにパラメータをbarに渡すことができることです:

task :foo do
  # this calls bar, I would like to pass params (i.e n = 10)
  # as if I were calling cap bar -s n=10
  # bar does not take arguments
  bar
end

task :bar do
  if exists?(:n)
    puts "n is: #{n}"
  end
end
4

2 に答える 2

3

カピストラーノ 3.x で

desc "I accept a parameter"
task :foo, :foo_param do |t, args|
  foo_param = args[:foo_param]
  puts "I am #{foo_param}"
end

desc "I call the foo task"
task :bar do
  invoke("foo", "batman")
  # prints "I am batman"
end
于 2015-07-31T14:16:36.503 に答える
0

Capistrano タスクは実際にはパラメーター化できません。次のように、ヘルパー メソッドを定義できます。

task :foo do
  bar(10)
end

def bar(n=variables[:n])
  puts "N is #{n}"  
end

:bar もタスクにすることに固執している場合は、次のトリックを試してください。

task :foo do
  bar(10)
end

task :bar { bar }

def bar(n=variables[:n])
  puts "N is #{n}"  
end

タスクはメソッドの前に宣言する必要があることに注意してください。

于 2013-07-30T22:48:53.230 に答える