Advertisement
Guest User

Untitled

a guest
Jan 9th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. require 'amqp'
  2. module HiringThingEM
  3. def self.start
  4. if defined?(PhusionPassenger)
  5. PhusionPassenger.on_event(:starting_worker_process) do |forked|
  6. # for passenger, we need to avoid orphaned threads
  7. if forked && EM.reactor_running?
  8. EM.stop
  9. end
  10. Thread.new {
  11. EM.run do
  12. AMQP.channel ||= AMQP::Channel.new(AMQP.connect(:host=> Q_SERVER, :user=> Q_USER, :pass => Q_PASS, :vhost => Q_VHOST ))
  13. end
  14. }
  15. die_gracefully_on_signal
  16. end
  17. else
  18. # faciliates debugging
  19. Thread.abort_on_exception = true
  20. # just spawn a thread and start it up
  21. Thread.new {
  22. EM.run do
  23. AMQP.channel ||= AMQP::Channel.new(AMQP.connect(:host=> Q_SERVER, :user=> Q_USER, :pass => Q_PASS, :vhost => Q_VHOST ))
  24. end
  25. } unless defined?(Thin)
  26. # Thin is built on EventMachine, doesn't need this thread
  27. end
  28. end
  29.  
  30. def self.die_gracefully_on_signal
  31. Signal.trap("INT") { EM.stop }
  32. Signal.trap("TERM") { EM.stop }
  33. end
  34. end
  35.  
  36. HiringThingEM.start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement