Pregunta

¿Es absolutamente crítico que siempre cierre Syslog cuando termine de usarlo?¿Hay un enorme impacto negativo por no hacerlo?

Si resulta que definitivamente lo necesito, ¿cuál es una buena manera de hacerlo?Estoy abriendo Syslog en mi constructor de clases y no veo una manera de hacer destructores de clases en Ruby, y actualmente tengo algo parecido a esto:

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

No veo inmediatamente el lugar donde Syslog.close La llamada debería ser, pero ¿qué recomiendas?

¿Fue útil?

Solución

El método abierto acepta un bloque.Haz algo como esto:

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

Otros consejos

Parece que lo estás abriendo como una variable de clase...entonces la forma correcta sería hacer...

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

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

Aunque esto no es necesariamente predecible ni respaldado.Es la forma de hacerlo si vas a mantener el código como lo haces.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top