Ruby - убедитесь, что системный журнал закрывается - PullRequest
1 голос
/ 21 сентября 2008

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

Если окажется, что мне определенно нужно, какой хороший способ это сделать? Я открываю Syslog в своем конструкторе классов и не вижу способа создавать деструкторы классов в Ruby, и в настоящее время у меня есть нечто похожее на это:

class Foo
  def initialize
    @@log = Syslog.open("foo")
  end
end

Я не сразу вижу место, где должен быть звонок Syslog.close, но что вы порекомендуете?

Ответы [ 2 ]

2 голосов
/ 21 сентября 2008

Открытый метод принимает блок. Сделайте что-то вроде этого:

class Foo
  def do_something
    Syslog.open do
      # work with the syslog here
    end
  end
end
1 голос
/ 21 сентября 2008

Похоже, вы открываете его как переменную класса ... так что правильный путь будет ...

class Foo
  def initialize
    @@log = Syslog.open("foo")
  end

  def Foo.finalize(id)
    @@log.close if @@log
  end
end

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

...