Я пытаюсь найти способ безопасного освобождения ресурсов, приобретенных классом.Я пытался использовать finalize
, но это ненадежно.Иногда я закрываю свою программу до того, как у GC появится шанс освободить ресурсы.
Поэтому я решил использовать экземпляр класса в блоке, например:
class Foo
def destroy # free resources
#...
end
#...
def self.create(*args)
instance = self.new(*args)
begin
yield instance
ensure
instance.destroy
end
end
Foo.create do |foo|
# use foo
end
Это прекрасно работает, но я все еще могусоздайте экземпляр, используя new
, который я должен был бы destroy
явно.Я пытался написать свой собственный new
, но по умолчанию кажется, что он просто перегружен new
.
Есть ли способ переопределить \ отключить new
?