Ruby - FileUtils.cp_r无法覆盖

时间:2013-10-15 05:39:00

标签: ruby

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

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

2 个答案:

答案 0 :(得分:1)

您似乎正在尝试将文件src移至完全相同的位置dst,并按功能返回错误。

答案 1 :(得分:0)

这是一些自己调试的方法。在你的帖子中我可以看到'block in 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

现在我相信你会得到错误出现的原因。