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!

È stato utile?

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
scroll top