Допустим, у меня есть класс logger, у которого есть атрибут, указывающий на открытый файл. Этот файл должен быть открыт, пока этот класс больше не используется. Что-то вроде:
class MyLogger
attr_accessor :log_file
def initialize
@log_file = File.new('my_log_file_name.log','w')
end
def finalize(id)
@log_file.close
end
end
Как я могу гарантировать, что когда я больше не буду использовать этот экземпляр, дескриптор файла будет закрыт? Я пробовал это, но без эффекта:
l = MyLogger.new
l = nil
ObjectSpace.garbage_collect
После этого, если я попытаюсь удалить файл, он выдаст ошибку о том, что файл используется.