Question

Est-il absolument essentiel de toujours fermer Syslog lorsque je l'utilise? Y a-t-il un impact négatif considérable en ne le faisant pas?

S'il s'avère que j'en ai absolument besoin, quel est le bon moyen de le faire? J'ouvre Syslog dans le constructeur de ma classe et je ne vois pas comment faire des destructeurs de classe dans Ruby, et j'ai actuellement quelque chose qui ressemble à ceci:

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

Je ne vois pas immédiatement l'endroit où devrait figurer l'appel Syslog.close , mais que recommandez-vous?

Était-ce utile?

La solution

La méthode open accepte un bloc. Faites quelque chose comme ça:

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

Autres conseils

On dirait que vous l'ouvrez en tant que variable de classe ... la bonne façon de procéder serait donc de le faire ...

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

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

Bien que cela ne soit pas nécessairement prévisible ou pris en charge. C'est le moyen de le faire si vous voulez conserver le code comme vous le faites.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top