0

zip アーカイブから 1 つのファイルを抽出する必要があります。以下は、ある時点で機能し、その後停止しました。最も基本的な方法でゼロから数回書き直してみましたが、まだ探しているファイルが見つかりません。

def restore(file)
    #pulls specified file from last commit
    found = []
    #files.each do |file|
        print "Restoring #{file}"
        puts
        Zip::ZipFile.open(".fuzz/commits/#{last_commit}.zip") do |zip_file|
            zip_file.each do |f|

                if f == file.strip
                    if File.exists?(file)
                        FileUtils.mv(file, "#{file}.temp")
                    end

                    FileUtils.cp(f, Dir.pwd)
                    found << file

                    if File.exists?("#{file}.temp")
                        FileUtils.rm_rf("#{file}.temp")
                    end
                else
                    puts "#{file} is not #{f}" #added this to make sure that 'file' was being read correctly and matched correctly.
                end
            end
        end
        print "\r"
        if found.empty? == false
            puts "#{found} restored."
        else
            puts "No files were restored"
        end

    #end
end

「#{file} is not #{f} は両方のファイルを示していますが、一致するものはないと考え続けています。私はこの 1 日間、頭を悩ませていました。ただ愚かになって、明らかな欠陥/タイプミスがありません。

4

2 に答える 2

1

例として引用したリンクには、大きな違いが 1 つあります。

ではなくf ==むしろ"#{f}"==。これは基本的に、 が文字列ではなく、 to_s メソッドがファイルの名前を返すことf.to_sを意味する不可解な言い方です。fしたがって、これを置き換えてみてください:

if f == file.strip

これとともに:

if f.to_s == file.strip
于 2013-06-06T00:07:16.097 に答える