Gancio di arresto per binari
-
05-07-2019 - |
Domanda
Mi piacerebbe avere un po 'di codice di pulizia eseguito quando Rails si sta chiudendo - è possibile? La mia situazione è che ho alcuni thread in background (sto usando jruby e chiamando in java) che vivono per la vita del processo e ho bisogno di far loro sapere di chiudersi
Grazie!
Soluzione
Probabilmente dovrebbe semplicemente usare il gestore dell'uscita Ruby, che è un metodo Kernel:
$ irb
>> at_exit do
?> puts 'bye...'
>> end
=> #<Proc:0xb79a87e4@(irb):1>
>> exit
bye...
$
Altri suggerimenti
Nel contesto di un'applicazione Rails, il posto migliore per inserire un file di questo tipo è in config / initializer
. Nella mia app, avevo bisogno di scaricare la coda Redis / Sidekiq ogni volta che si chiudevano gli ambienti di sviluppo o test. Funziona perfettamente.
config / inizializzatori / at_exit.rb
at_exit do
begin
puts 'Flushing Redis...'
Redis.new.flushall
rescue => e
puts "There was an #{e.to_s} while flushing redis..."
ensure
puts 'Done Flushing Redis!'
end
end unless Rails.env.production?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow