Domanda

Gli amici,

Sto cercando di elaborare un'enorme quantità di file audio utilizzando un Rubino (1.9.3) script scansionando il loro Id3-tags Usando il abbastanza velocemente taglib-ruby (0,2.1 tramite GEM-Server) Libreria.

Ecco una parte del mio codice, mentre audio Contiene il percorso completo del file in una corda di rubino:

begin 
  file_ref = TagLib::FileRef.new(audio) 
  unless file_ref.tag.nil? 
     unless file_ref.tag.artist.nil? or file_ref.tag.title.nil?
       …
     end
  end
ensure
 file_ref = nil
end

Poi mi metto nei guai quasi alla fine dell'elaborazione. Taglib si lamenta delle autorizzazioni di lettura mancanti e FileUtils.mv non è più in grado di spostare il file in seguito. Questo è probabilmente il caso, perché il mio script non ha le maniglie dei file gratuite Taglib sta mangiando durante l'elaborazione.

Sfortuna Non ho trovato un certo metodo Ruby in taglib-ruby API, che alla fine chiama uno o migliore entrambi Taglieri Funzioni C:

taglib_tag_free_strings();
taglib_file_free(file);

libmagic Gli attacchi di Ruby ad esempio forniscono un close-Metodo all'interno di il suo Magic classe, in modo che la liberazione di Whithin garantisca blocchi.

Mi manca solo il metodo Ruby corretto per taglib-ruby o manca al momento? C'è un altro modo per liberare le maniglie dei file acquisite tramite Ruby?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top