我正在尝试使用 'mp3info' gem 读取 mp3 文件,并通过在目录中的文件名中以 .mp3 结尾的每个文件并使用 Dir.chdir() 进入目录并重复该过程并存储这些标签在数据库中。但是我有 30gb 的音乐收藏,整个扫描大约需要 6-10 分钟才能完成。有什么办法可以优化这个扫描吗?
        def self.gen_list(dir)
        prev_pwd=Dir.pwd
        begin
            Dir.chdir(dir)
        rescue Errno::EACCES
        end
        counter = 0
        Dir[Dir.pwd+'/*'].each{|x|
            #puts Dir.pwd
            if File.directory?(x) then
                self.gen_list(x) do |y|
                    yield y
                end
            else if File.basename(x).match('.mp3') then
                    begin
                        Mp3Info.open(x) do |y|
                            yield [x,y.tag.title,y.tag.album,y.tag.artist]
                        end
                    rescue Mp3InfoError
                    end
                end  
            end
        }
        Dir.chdir(prev_pwd)
    end
这是生成列表并将标签发送到 &block 数据存储在数据库中的方法。