Pergunta

É absolutamente crítico que eu sempre feche o syslog quando terminei de usá -lo? Existe um enorme impacto negativo por não fazê -lo?

Se eu definitivamente preciso, qual é uma boa maneira de fazer isso? Estou abrindo syslog no meu construtor de classe e não vejo uma maneira de fazer destruidores de classe em Ruby, e atualmente tenho algo parecido com isso:

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

Eu não vejo imediatamente o lugar onde o Syslog.close A chamada deve ser, mas o que você recomenda?

Foi útil?

Solução

O método aberto aceita um bloco. Faça algo assim:

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

Outras dicas

Parece que você está abrindo como uma variável de classe ... então a maneira correta seria fazer ...

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

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

Embora isso não seja necessariamente previsível ou suportado. É a maneira de fazer isso se você manter o código da maneira que você faz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top