Frage

Ist es absolut kritisch, dass ich Syslog immer schließe, wenn ich damit fertig bin? Gibt es einen enormen negativen Einfluss davon, wenn Sie dies nicht tun?

Wenn sich herausstellt, dass ich definitiv brauche, was ist ein guter Weg, dies zu tun? Ich öffne Syslog in meinem Klassenkonstruktor und sehe keinen Weg, Klassenzerstörer in Ruby zu machen, und habe derzeit etwas, das dem ähnelt:

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

Ich sehe nicht sofort den Ort, an dem die Syslog.close Anruf sollte sein, aber was empfehlen Sie?

War es hilfreich?

Lösung

Die offene Methode akzeptiert einen Block. So etwas tun:

class Foo
  def do_something
    Syslog.open do
      # work with the syslog here
    end
  end
end

Andere Tipps

Es sieht so aus, als würden Sie es als Klassenvariable öffnen ... also wäre der richtige Weg ...

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

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

Dies ist zwar nicht notwendigerweise vorhersehbar oder unterstützt. Es ist der Weg, es zu tun, wenn Sie den Code so halten möchten, wie Sie es tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top