문제

Syslog 사용이 끝나면 항상 Syslog를 닫는 것이 절대적으로 중요합니까?그렇게 하지 않으면 부정적인 영향이 크나요?

꼭 그렇게 해야 한다고 밝혀지면 어떻게 하는 좋은 방법이 있을까요?클래스 생성자에서 Syslog를 열고 있는데 Ruby에서 클래스 소멸자를 수행할 수 있는 방법이 없습니다. 현재 다음과 유사한 항목이 있습니다.

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

나는 그 장소가 바로 보이지 않는다. Syslog.close 전화를 걸어야 하는데 무엇을 추천하시나요?

도움이 되었습니까?

해결책

open 메소드는 블록을 허용합니다.다음과 같이 하십시오:

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