icn icn - 5 months ago 15
Bash Question

Ruby run shell command in a specific directory

I know how to run a shell command in Ruby like:

%x[#{cmd}]


But, how do I specify a directory to run this command?

Is there a similar way of shelling out, similar to
subprocess.Popen
in Python:

subprocess.Popen(r'c:\mytool\tool.exe', cwd=r'd:\test\local')


Thanks!

Answer

You can use the block-version of Dir.chdir. Inside the block you are in the requested directory, after the Block you are still in the previous directory:

Dir.chdir('mydir'){
  %x[#{cmd}]
}
Comments