我使用非常快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获取的文件句柄?