Ruby - Убедитесь, что Системный журнал закрыт

StackOverflow https://stackoverflow.com/questions/111687

  •  02-07-2019
  •  | 
  •  

Вопрос

Абсолютно ли важно, чтобы я всегда закрывал Системный журнал, когда заканчиваю его использовать?Есть ли огромные негативные последствия от того, что вы этого не делаете?

Если окажется, что мне это определенно нужно, какой хороший способ это сделать?Я открываю системный журнал в моем конструкторе класса, и я не вижу способа создать деструкторы классов в 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

Хотя это необязательно предсказуемо или поддерживается.Это способ сделать это, если вы собираетесь сохранить код таким, каким вы его делаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top