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

自分でデバッグする方法を次に示します。あなたの投稿では、「block in fu_each_src_dest」: same file: という行が表示されます。今、私はリンクに来ました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 に答える