otrzymuję następujący błąd:ERRNO :: ENOENT: Nie ma takiego pliku lub katalogu rubin
"Errno::ENOENT: No such file or directory"
gdy próbuję pobrać plik do katalogu, który nie istnieje.
Na przykład:
ftp = Net::FTP.new('example.com')
ftp.login
files = ftp.chdir('pub/lang/ruby/contrib')
files = ftp.list('n*')
ftp.getbinaryfile('nif.rb-0.91.gz', 'pub/lang/ruby/contrib/nif.gz', 1024)
ftp.close
Jednak dla wielu plików będę pobierania, pełna ścieżka do katalogu nie będzie istnieć. Na przykład, dopóki pierwszy plik nie utworzy knajpy, nie będzie istnieć, a dotyczy to również lang/ruby / contrib.
Czy istnieje metoda sprawdzania, czy istnieją katalogi i czy nie można ich utworzyć? Wiem, że istnieje, ale to wygląda na pliki referencyjne i nie tworzy pełnej ścieżki. Sądzę, że potrzebuję jakiejś rekurencyjnej metody przechodzenia w dół struktury folderów, dopóki nie trafi ona w nazwę pliku.
EDYCJA: mkdir_p wydaje się być dokładnie rozwiązaniem, którego potrzebuję.
Jednak kiedy używać ścieżki "/ a/b/c" Zauważyłem, że FileUtils.mkdir_p (File.dirname (localdir)) zwraca błąd: errno :: EACCES: Permission denied -/A
Jeśli usuniemy "/" z przodu, to działa. Co to powoduje? Jakie jest najlepsze rozwiązanie problemu z błędem? powinienem po prostu użyć następujących?
path="https://stackoverflow.com/a/b/c"
if path[0]="/"
path=path[1..-1]
end
Jednak wydaje mi się, że to po prostu hack.