Sha256: 4fa3e290a239b3a2f5bb4bb1993c5b856558d2e70cd3067beafd57889505d360
Contents?: true
Size: 1.22 KB
Versions: 18
Compression:
Stored size: 1.22 KB
Contents
module Houston def self.daemonize(name) unless Houston.server? or ENV["HOUSTON_DAEMONS"].to_s.split(",").member?(name) puts "\e[94m[daemon:#{name}] Skipping daemon since we're not running as a server\e[0m" if Rails.env.development? Rails.logger.info "\e[94m[daemon:#{name}] Skipping daemon since we're not running as a server\e[0m" return end puts "\e[94m[daemon:#{name}] Connecting\e[0m" if Rails.env.development? Rails.logger.info "\e[94m[daemon:#{name}] Connecting\e[0m" Thread.new do begin connected_at = Time.now Houston.observer.fire "daemon:#{name}:start" yield rescue Exception puts "\e[91m#{$!.class}: #{$!.message}\e[0m" if Rails.env.development? Houston.report_exception $! unless (Time.now - connected_at) < 60 Houston.observer.fire "daemon:#{name}:restart" retry end end # This should never happen puts "\e[31m[daemon:#{name}] Disconnected\e[0m" if Rails.env.development? Rails.logger.error "\e[31m[daemon:#{name}] Disconnected\e[0m" # http://stackoverflow.com/a/3516003/731300 Rails.logger.flush Houston.observer.fire "daemon:#{name}:stop" end end end
Version data entries
18 entries across 18 versions & 1 rubygems