1

これは私のdeploy.rbもので、2 つのタスクがあります。

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

これどうやってするの?

4

1 に答える 1

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

もう一方の方法は、はるかにクリーンです。

于 2012-09-07T23:51:06.870 に答える