Kopanie w tempfile.rb
zauważysz, że Tempfile
obejmuje Dir::Tmpname
. Wewnątrz znajdziesz make_tmpname
, który spełnia Twoje oczekiwania.
Dir::Tmpname.make_tmpname "/tmp/źdźbło", nil
# => "/tmp/źdźbło20121209-1867-1qyptqe"
Dir::Tmpname.make_tmpname(['a', '.png'], nil)
# => "a20121209-2710-wcjbzr.png"
w tym samym pliku, istnieje również Dir::Tmpname.create
które, w zależności od tego, co chcesz osiągnąć, robi się trochę bardziej niż make_tmpname
. W szczególności określa, z jakiego katalogu tymczasowego należy korzystać (zakładając, że nie jesteś na * nix, gdzie /tmp
jest poprawnym globalnie założeniem). Mimo to, trochę brzydka wykorzystują zważywszy, że spodziewa się blok:
Dir::Tmpname.create(['a', '.png']) { }
# => "/tmp/a20140224-15930-l9sc6n.png"
blok jest tam kod, aby sprawdzić, czy plik istnieje i podnieść Errno::EEXIST
tak, że nowa nazwa może być generowane z zwiększając wartość oznaczone na koniec.
Dzięki, to wszystko. Może być również używany z argumentem tablicowym, aby zachować rozszerzenie nazwy pliku: 'Dir :: Tmpname.make_tmpname (['a', '.png'], zero)' – iltempo
@iltempo, nie ma za co. Dodałem twój przykład do odpowiedzi. – Jan
To jest świetne, ale nikt nie wspomniał, że musisz "wymagać" tmpdir'', aby to działało. – KingBob