class KonoUtils::TmpFile
Classe Funzionante prettamente con RAILS la classe si occupa dei files temporanei creando una cartella dentro a tmp del progetto crea una cartella random per ogni file per ovviare al problema di duplicazioni dei nomi Estende Tempfile, la root della struttura è quella di Rails.root e di default la classe scrive dentro a tmp non ha bisogno di essere cancellata, ci penserà in automatico la classe una la prossima volta che viene chiamata cancellando tutti i files con un TTL maggiore di 1.day di default
Utilizzo:
tmp = TmpFile.new
('nomefile.ext') tmp.path -> path completa tmp.write.…. tmp.original_filename.…… tmp.unique_filename.……
Constants
- PATH
- TIME_LIMIT
Attributes
Public Class Methods
Generate a new file with a given name
-
Args :
-
name -> String of the name file
-
-
Returns :
-
Tempfile
-
# File lib/kono_utils/tmp_file.rb, line 39 def initialize(name) self.original_filename = name self.root_dir = controll_root clean_tmpdir #creo una nuova cartella per il file attuale self.tmp_dir = "#{self.root_dir.path}/#{Time.now.to_f}" Dir.mkdir(self.tmp_dir) ext = File.extname(name) name = [File.basename(name), ext] unless ext.blank? @tmp_file = Tempfile.create(name, self.tmp_dir) self.unique_filename= File.basename(self.path) end
Public Instance Methods
# File lib/kono_utils/tmp_file.rb, line 56 def unlink File.unlink(@tmp_file.path) rescue Errno::ENOENT rescue Errno::EACCES # may not be able to unlink on Windows; just ignore return end
Private Instance Methods
Clean the directory
# File lib/kono_utils/tmp_file.rb, line 89 def clean_tmpdir self.root_dir.each do |d| # controlliamo il nome del file. in quanto il nome del file coincide al Time.now if d != '..' and d != '.' if d.to_i < Time.now.to_i - TIME_LIMIT FileUtils.rm_rf(File.join(self.root_dir.path, d)) end end end end
controll presence of root dir if not exists create it
-
Returns :
-
Dir
-
# File lib/kono_utils/tmp_file.rb, line 72 def controll_root root = '/' if defined?("::Rails") if Rails.respond_to?(:root) root = ::Rails.root end end root = File.join(root, PATH) unless File.exist?(root) Dir.mkdir(root) end Dir.open(root) end