所以我这里有一个功能,应该采取的路径到archive.zip作为参数,并递归将深入了解每一个子目录,直到找到与扩展名的文件的.html递归目录搜索
def path_to_project
"#{recursive_find(File.dirname(self.folder.path))}"
end
path_to_project用于将此recursive_find进程作为字符串进行即时应用,因为它在整个进程中重复使用。
def recursive_find(proj_path)
Dir.glob("#{proj_path}/*") do |object_path|
if object_path.split(".").last == "html"
@found_it = File.dirname(object_path)
else
recursive_find(object_path)
end
end
@found_it
end
不管怎么说,我对的stackoverflow-智能乡亲两个问题
1-是我使用@found_it实例变量是否正确? ,也许我应该使用attr_accessor:found_it代替?显然命名别的不愚蠢..也许:html_file。
也许 -
unless @found_it
# do the whole recursive thing
end
return @found_it
# I don't actually have to return the variable right?
2 - 莫非我的递归方法更好?我意识到这是非常开放的,所以通过一切手段,消除你愤怒的居民。我很乐意接受你的严厉批评,并全心全意感谢您的好建议:)
你可以进入一个无限循环作为你的递归调用没有基础的情况下,如果没有什么文件匹配“HTML” – bjhaid
你需要使用递归?你就不能像'DIR [“#{} proj_path/**/*。HTML”]'会给你所有具有HTML扩展 –