Module: Momentarily
- Defined in:
- lib/momentarily.rb,
lib/momentarily/version.rb
Constant Summary collapse
- VERSION =
"0.0.6"
- @@timeout =
60
- @@debug =
false
- @@inline =
false
Class Method Summary collapse
- .defer(work = nil, callback = nil, &block) ⇒ Object
- .die_gracefully_on_signal ⇒ Object
- .later(work = nil, callback = nil, &block) ⇒ Object
- .next_tick(work = nil, &block) ⇒ Object
- .reactor_running? ⇒ Boolean
- .start ⇒ Object
Class Method Details
.defer(work = nil, callback = nil, &block) ⇒ Object
66 67 68 |
# File 'lib/momentarily.rb', line 66 def Momentarily.defer(work = nil, callback = nil, &block) EM.defer( ( work || block ), callback) end |
.die_gracefully_on_signal ⇒ Object
48 49 50 51 |
# File 'lib/momentarily.rb', line 48 def Momentarily.die_gracefully_on_signal Signal.trap("INT") { EM.stop } Signal.trap("TERM") { EM.stop } end |
.later(work = nil, callback = nil, &block) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/momentarily.rb', line 53 def Momentarily.later(work = nil, callback = nil, &block) if @@inline (work || block).call callback.call unless callback.blank? else EM.defer( self.railsify(( work || block )), self.railsify(callback) ) end end |
.next_tick(work = nil, &block) ⇒ Object
62 63 64 |
# File 'lib/momentarily.rb', line 62 def Momentarily.next_tick(work = nil, &block) EM.next_tick( ( work || block ) ) end |
.reactor_running? ⇒ Boolean
70 71 72 |
# File 'lib/momentarily.rb', line 70 def Momentarily.reactor_running? EM.reactor_running? end |
.start ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/momentarily.rb', line 19 def Momentarily.start # faciliates debugging Thread.abort_on_exception = @@debug if defined?(PhusionPassenger) puts "Momentarily: Passenger thread init." if @@debug PhusionPassenger.on_event(:starting_worker_process) do |forked| # for passenger, we need to avoid orphaned threads if forked && EM.reactor_running? EM.stop end Thread.new { EM.run } die_gracefully_on_signal end # if Thin is defined, but in console mode, Thin probably isn't running elsif (!EM.reactor_running? && defined?(Thin).nil?) || !defined?(Rails::Console).nil? # spawn a thread and start it up puts "Momentarily: Standard thread init." if @@debug Thread.new { EM.run } else # Thin is built on EventMachine, doesn't need another thread puts "Momentarily: Reactor already running or detected Thin." if @@debug end end |