我使用非常快taglib-ruby
(0.2.1通過偕掃描他們的ID3標籤試圖處理一個巨大的使用紅寶石(1.9.3)腳本的音頻文件量服務器)庫。
這裏是我的代碼的一部分,而audio
包含一個Ruby字符串完整的文件路徑:
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
然後,我遇到麻煩幾乎在處理結束。 TagLib抱怨缺少讀取權限,FileUtils.mv
之後不再能夠移動文件。這可能是這種情況,因爲我的腳本沒有釋放文件句柄TagLib在處理時正在吃東西。
Unfortunalty 我不沒有找到一定的Ruby方法在taglib-ruby
API,最終調用一個或更好兩者標籤庫 C-功能:
taglib_tag_free_strings();
taglib_file_free(file);
libmagic
Ruby綁定例如提供close
- 在其Magic
類中的方法,以便釋放whithin確保塊將工作。
我是否錯過了正確的用於taglib-ruby
的Ruby方法或者此刻是否丟失?有沒有另外一種方式來釋放通過Ruby獲取的文件句柄?