6.14. Tworzenie wersjonowanych kopii pliku

Problem

Przed nadpisaniem zawartości oryginalnego pliku chcemy utworzyć jego kopię; postępowanie to chcemy wielokrotnie powtarzać, za każdym razem nadając docelowemu plikowi inną nazwę, jednak bazującą na nazwie oryginalnej.

Rozwiązanie

Nazwę kolejnej kopii zapasowej możemy tworzyć przez dołączenie do nazwy oryginalnej przyrostka identyfikującego kolejną wersję. Począwszy od pewnego przyrostka „startowego”, na przykład '.0', za pomocą metody String#succ możemy generować kolejne nazwy aż do uzyskania nazwy pliku nieistniejącego.

class File def File.versioned_filename(base, first_suffix='.0') suffix = nil filename = base while File.exists?(filename) suffix = (suffix ? suffix.succ : first_suffix) ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.