Sha256: a1fa26bdb3eba726d6ed98618134e5605d6fc40972b922448898383afbfd7140

Contents?: true

Size: 890 Bytes

Versions: 2

Compression:

Stored size: 890 Bytes

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

    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
      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

2 entries across 2 versions & 1 rubygems

Version Path
woodhouse-0.1.2 lib/woodhouse/process.rb
woodhouse-0.1.1 lib/woodhouse/process.rb