这是我的deploy.rb
,我有两个任务:
set :rpm_name,""
set :dir,"/tmp"
task :rpminfo do
rpmofos1=capture("rpm -q #{rpm_name}")
new_test
puts "#{rpmofos1}"
end
task :new_test do
run "ls -ltr #{dir}"
end
我正在调用cap
命令:
cap hostname rpminfo -s user=root -s dir=/root
这样可以正常工作,但我不想从命令行传递dir变量,而是希望将其作为:
task :rpminfo do
rpmofos1=capture("rpm -q #{rpm_name}")
new_test -s dir=/var
puts "#{rpmofos1}"
end
我该怎么做?
答案 0 :(得分:0)
我会将new_test定义放在辅助方法中。
set :rpm_name,""
set :dir,"/tmp"
task :rpminfo do
rpmofos1=capture("rpm -q #{rpm_name}")
new_test_helper("/var")
puts "#{rpmofos1}"
end
def new_test_helper(path)
run "ls -ltr #{path}"
end
task :new_test do
new_test_helper(dir)
end
但是,如果你不喜欢这个想法,你也可以在调用子任务之前暂时设置变量。
set :rpm_name,""
set :dir,"/tmp"
task :rpminfo do
rpmofos1=capture("rpm -q #{rpm_name}")
old_dir = dir
set :dir, "/tmp"
new_test
set :dir, old_dir
puts "#{rpmofos1}"
end
task :new_test do
run "ls -ltr #{dir}"
end
另一种方式更清洁。