Let´s say I have a logger class that has an attribute pointing to an open file. This file should be open until this class is no longer used. Something like:
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
How can I ensure that when I will no longer use this instance, the file handle will be closed? I´ve tried this but with no effect:
l = MyLogger.new
l = nil
ObjectSpace.garbage_collect
After this, if I try to delete the file it will throw an error stating that the file is in use.