Sha256: 8e3830d9e8b2970022df865524bd3b17e2101ebcd26e61b5849b142bc10c1fdc

Contents?: true

Size: 982 Bytes

Versions: 2

Compression:

Stored size: 982 Bytes

Contents

require 'zygote/http'
require 'thin'

class ZygoteServer
  def initialize(port: 7000, threads:1000, host: '0.0.0.0', config_path: nil, cells: [], debug:false)
    debug ||= ENV['DEBUG']

    cell_config = YAML.load(File.read(config_path || File.join(Dir.pwd, 'config', 'cells.yml')))
    ZygoteWeb.views = [File.expand_path('../../../views', __FILE__), cells].flatten
    ZygoteWeb.cell_config = cell_config
    if debug
      $stdout.sync = true
      $stderr.sync = true
    end

    app = ZygoteWeb.new
    dispatch = Rack::Builder.app do
      map '/' do
        run app
      end
    end
    @server = Thin::Server.new(port, host, dispatch, threadpool_size: threads).backend
  end

  def start
    @server.start
  end

  def run
    EM.run do
      init_sighandlers
      @server.start
    end
  end
end

def init_sighandlers
  trap(:INT)  { 'Got interrupt'; EM.stop; exit }
  trap(:TERM) { 'Got term';      EM.stop; exit }
  trap(:KILL) { 'Got kill';      EM.stop; exit }
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
zygote-0.2.1 lib/zygote/server.rb
zygote-0.2.0 lib/zygote/server.rb