Domanda

È assolutamente fondamentale chiudere sempre Syslog quando ho finito di usarlo? C'è un enorme impatto negativo nel non farlo?

Se risulta che devo assolutamente farlo, qual è un buon modo per farlo? Sto aprendo Syslog nel mio costruttore di classi e non vedo un modo per fare i distruttori di classe in Ruby, e attualmente ho qualcosa di simile a questo:

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

Non vedo immediatamente dove dovrebbe essere la chiamata Syslog.close , ma cosa mi consigliate?

È stato utile?

Soluzione

Il metodo open accetta un blocco. Fai qualcosa del genere:

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

Altri suggerimenti

Sembra che tu lo stia aprendo come una variabile di classe ... quindi il modo corretto sarebbe fare ...

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

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

Sebbene ciò non sia necessariamente prevedibile o supportato. È il modo per farlo se hai intenzione di mantenere il codice come fai tu.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top