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

Version Path
houston-core-0.8.0.pre lib/houston/boot/daemonize.rb
houston-core-0.7.0 lib/houston/boot/daemonize.rb
houston-core-0.7.0.beta4 lib/houston/boot/daemonize.rb
houston-core-0.7.0.beta3 lib/houston/boot/daemonize.rb
houston-core-0.7.0.beta2 lib/houston/boot/daemonize.rb
houston-core-0.7.0.beta lib/houston_daemonize.rb
houston-core-0.6.3 lib/houston_daemonize.rb
houston-core-0.6.2 lib/houston_daemonize.rb
houston-core-0.6.1 lib/houston_daemonize.rb
houston-core-0.6.0 lib/houston_daemonize.rb
houston-core-0.5.6 lib/houston_daemonize.rb
houston-core-0.5.5 lib/houston_daemonize.rb
houston-core-0.5.4 lib/houston_daemonize.rb
houston-core-0.5.3 lib/houston_daemonize.rb
houston-core-0.5.2 lib/houston_daemonize.rb
houston-core-0.5.1 lib/houston_daemonize.rb
houston-core-0.5.0 lib/houston_daemonize.rb
houston-core-0.5.0.beta1 lib/houston_daemonize.rb