1

我想将目录复制到另一个目录。(如果存在,覆盖)所以在我的循环中,,,

FileUtils.cp_r(src, dst, :remove_destination => true)

但我遇到了错误

/home/deployer/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:1550:in `block in fu_each_src_dest': same file: 273 and /todpop/todpop_data/word/image/273 (ArgumentError)
from /home/deployer/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:1565:in `fu_each_src_dest0'
from /home/deployer/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:1549:in `fu_each_src_dest'
from /home/deployer/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/fileutils.rb:434:in `cp_r'
from copy.rb:16:in `block (2 levels) in <main>'
from copy.rb:15:in `each'
from copy.rb:15:in `block in <main>'
from copy.rb:8:in `each'
from copy.rb:8:in `<main>'

为什么尽管设置了 :remove_destination 仍会发生此错误?T^T

4

2 回答 2

1

看起来您正在尝试将文件移动src到完全相同的位置dst,并且按功能返回错误。

于 2013-10-15T05:49:12.230 回答
0

这是您自己调试的一些方法。在您的帖子中,我可以看到“fu_each_src_dest 中的块”行:同一个文件:。现在我来到了链接fu_each_src_dest。以下是代码:

# File lib/fileutils.rb, line 1512
  def fu_each_src_dest(src, dest)   #:nodoc:
    fu_each_src_dest0(src, dest) do |s, d|
      raise ArgumentError, "same file: #{s} and #{d}" if fu_same?(s, d)
      yield s, d, File.stat(s)
    end
  end

现在我相信你会明白为什么会出现错误。

于 2013-10-15T06:01:22.283 回答