Sha256: 51325efa45102f40d36b1e170ef3ec7013c32bbd6b3ea5c9e441d7462bc4e9bd

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

# TODO: take arguments. Also consider using thor.
class Woodhouse::Process

  def initialize(keyw = {})
    @server = keyw[:server] || build_default_server(keyw)
  end
  
  def execute
    # Borrowed this from sidekiq. https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/cli.rb
    trap "INT" do
      Thread.main.raise Interrupt
    end

    trap "TERM" do
      Thread.main.raise Interrupt
    end

    Woodhouse::Watchdog.start
    Woodhouse::Watchdog.listen do |id, transition|
      Woodhouse.global_configuration.logger.info "[##{id}] #{transition}"
    end

    begin
      @server.start!
      puts "Woodhouse serving as of #{Time.now}. Ctrl-C to stop."
      @server.wait(:shutdown) 
    rescue Interrupt
      puts "Shutting down."
      @server.shutdown!
      @server.wait(:shutdown)
    ensure
      @server.terminate
      Woodhouse::Watchdog.stop
      exit
    end
  end

  private

  def build_default_server(keyw)
    Woodhouse::Server.new(
      :layout => keyw[:layout] || Woodhouse.global_layout,
      :node   => keyw[:node]   || :default
    )
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
woodhouse-0.1.5 lib/woodhouse/process.rb