背景:我在MRI 1.9.2p320中写了一个简短的脚本来更新我的所有项目 - http://git.io/eez8Kg。我用于更新/拉取自身(git-up)的工具也能够在发现更改的Gemfile后自动捆绑项目。问题是,当我在Ruby脚本中更改目录时,它不尊重项目的rvmrc / gemset(每个项目都有自己的gemset)。
问题:如何让Ruby脚本中的cd
与我的终端中的行为相同
我试过了:
Dir.chdir
Dir.chdir
zsh -ci
代码:
Find.find('../..') do |f|
if f =~ /\.git$/
repository = f.gsub /\.git$/, ''
Logger.new(STDOUT).info('Checking '){repository}
Dir.chdir(repository){
puts `git up`
}
end
end
答案 0 :(得分:0)
zshin, zshout, zsherr = Open3.popen3('zsh') # Open new shell
zshin.puts 'cd ~/Projects/superimportant_project' # Change directory
zshin.puts 'rvm-prompt' # Verify rvmrc is respected
zshin.puts 'exit' # Exit the shell
while (line = zshout.gets)
puts line
end
退出shell不是强制性的,但是例如rvm-prompt
保持挂起,不会发生任何其他事情。如果你用ls尝试同样的事情,你就不需要退出线了。