Ruby - Убедитесь, что Системный журнал закрыт
Вопрос
Абсолютно ли важно, чтобы я всегда закрывал Системный журнал, когда заканчиваю его использовать?Есть ли огромные негативные последствия от того, что вы этого не делаете?
Если окажется, что мне это определенно нужно, какой хороший способ это сделать?Я открываю системный журнал в моем конструкторе класса, и я не вижу способа создать деструкторы классов в Ruby, и в настоящее время у меня есть что-то похожее на это:
class Foo
def initialize
@@log = Syslog.open("foo")
end
end
Я не сразу вижу то место, где находится Syslog.close
звонить надо, но что вы порекомендуете?
Решение
Открытый метод принимает блок.Сделайте что-то вроде этого:
class Foo
def do_something
Syslog.open do
# work with the syslog here
end
end
end
Другие советы
Похоже, вы открываете его как переменную класса...так что правильным способом было бы поступить...
class Foo
def initialize
@@log = Syslog.open("foo")
end
def Foo.finalize(id)
@@log.close if @@log
end
end
Хотя это необязательно предсказуемо или поддерживается.Это способ сделать это, если вы собираетесь сохранить код таким, каким вы его делаете.