2010-07-09 4 views
0

나는 잘 작동 데비안 패키지를 만드는 다음 루비 스크립트 있습니다실행 리눅스 시스템은 루비 스크립트에서 명령을

 
#!/usr/bin/ruby 

    dest = "#{File.dirname(__FILE__)}/../build" 
    package = "foo" 

    [ 
    "cd #{dest} && tar czvf data.tar.gz bin console data.sql etc filter install.rb", 
    "cd #{dest} && tar czvf control.tar.gz control", 
    "cd #{dest} && echo 2.0 > debian-binary", 
    "cd #{dest} && ar -cr #{package}.deb debian-binary control.tar.gz data.tar.gz", 
    "cd #{dest} && mv #{package}.deb ..", 
    "cd #{dest} && rm data.tar.gz control.tar.gz", 
    ].each do |command| 
    puts command 
    system(command) 
    end 

내가 "CD 번호를 {생략 할 수 있습니다 루비의 방법이 dest} & & "각 명령의 일부입니까? 주어진 디렉토리로 변경 블록을 실행하고 다시 변경됩니다 블록 호출

답변

6
Dir.chdir(dest) do 
    # code that shall be executed while in the dest directory 
end 

Dir.chdir.

블록없이 사용할 수도 있습니다.이 경우 블록을 사용하지 않아도됩니다.

+0

달콤한. 매력처럼 일했습니다. 감사! –

2

예. Dir.chdir :

#!/usr/bin/ruby 

    dest = "#{File.dirname(__FILE__)}/../build" 
    package = "foo" 

    Dir.chdir dest 
    [ 
    "tar czvf data.tar.gz bin console data.sql etc filter install.rb", 
    "tar czvf control.tar.gz control", 
    "echo 2.0 > debian-binary", 
    "ar -cr #{package}.deb debian-binary control.tar.gz data.tar.gz", 
    "mv #{package}.deb ..", 
    "rm data.tar.gz control.tar.gz", 
    ].each do |command| 
    puts command 
    system(command) 
    end 
관련 문제