2009-10-22 6 views
6

J'aimerais que du code de nettoyage soit exécuté lorsque Rails est en cours de fermeture - est-ce possible? Ma situation est que j'ai quelques threads en arrière-plan (j'utilise jruby et en appelant java) qui vivent pour la vie du processus et je dois leur faire savoir pour se fermerArrêt de Rails pour Rails

Merci!

Répondre

14

Probablement devrait simplement utiliser le gestionnaire de sortie Ruby, qui est une méthode de noyau:

$ irb 
>> at_exit do 
?> puts 'bye...' 
>> end 
=> #<Proc:[email protected](irb):1> 
>> exit 
bye... 
$ 
+0

Impressionnant, merci! – Stuart

+0

Où mettriez-vous ce code? –

+0

Tant que JRuby a lui-même un cycle de vie correspondant au serveur d'application sous-jacent, vous pouvez le placer n'importe où au moins une fois. Un bon endroit serait d'enregistrer le gestionnaire de sortie dans n'importe quel morceau de code Ruby qui déclenche ces threads d'arrière-plan en premier lieu. – DigitalRoss