2

多くのサブディレクトリを含むディレクトリがあり、各サブディレクトリにはテストする異なるバージョンのプログラムが含まれています。

all_dirs.each do |dir|
  FileUtils.mv(test_spec, target_dir, :verbose => true)
  system("rspec #{test_folder_name}")
  puts "moving back: '#{spec_dir}' to '#{current_dir}'"
  FileUtils.mv(spec_dir, current_dir, :verbose => true)
end

ほとんどの場合、コードは成功しますが、ディレクトリが既に存在するため、ディレクトリを親ディレクトリに移動することを拒否することがあります。

mv ~/test/version-1/01-spec ~/test
~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:509:in `block in mv': File exists - ~/test (Errno::EEXIST)
        from ~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:1423:in `block in fu_each_src_dest'
        from ~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:1437:in `fu_each_src_dest0'
        from ~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:1421:in `fu_each_src_dest'
        from ~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:504:in `mv'

unixmvコマンドは有効であり、この例外がスローされた後に実行できます。私は何か間違ったことをしていますか?

4

1 に答える 1

2

~/testエラーが示すように、既に存在するため失敗しており、 FileUtilsはデフォルトでそれを上書きしません。force上書きを気にしない場合は、パラメーターを渡すことができます。

FileUtils.mv(test_spec, target_dir, :verbose => true, :force => true)
于 2012-10-20T21:28:52.143 に答える