1

Syslog を使い終わったら必ず閉じることは絶対に重要ですか? そうしないことによる大きな悪影響はありますか?

絶対に必要であることが判明した場合、それを行うための良い方法は何ですか? クラス コンストラクタで Syslog を開いていますが、Ruby でクラス デストラクタを実行する方法がわかりません。現在、次のようなものがあります。

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

電話をかける場所がすぐにはわかりませんSyslog.closeが、どこをお勧めしますか?

4

2 に答える 2

2

open メソッドはブロックを受け入れます。次のようにします。

class Foo
  def do_something
    Syslog.open do
      # work with the syslog here
    end
  end
end
于 2008-09-21T18:54:33.707 に答える
1

クラス変数として開いているようです...したがって、適切な方法は...

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

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

ただし、これは必ずしも予測可能またはサポートされているわけではありません。これは、コードをそのままにしておく場合の方法です。

于 2008-09-21T19:24:25.163 に答える