Class: Awestruct::CLI::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/awestruct/cli/server.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, bind_addr = Options::DEFAULT_BIND_ADDR, port = Options::DEFAULT_PORT, generate_on_access = Options::DEFAULT_GENERATE_ON_ACCESS) ⇒ Server

Returns a new instance of Server.



13
14
15
16
17
18
# File 'lib/awestruct/cli/server.rb', line 13

def initialize(path, bind_addr=Options::DEFAULT_BIND_ADDR, port=Options::DEFAULT_PORT, generate_on_access=Options::DEFAULT_GENERATE_ON_ACCESS)
  @path      = path
  @bind_addr = bind_addr
  @port      = port
  @generate_on_access = generate_on_access
end

Instance Attribute Details

#serverObject (readonly)

Returns the value of attribute server.



11
12
13
# File 'lib/awestruct/cli/server.rb', line 11

def server
  @server
end

Instance Method Details

#runObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/awestruct/cli/server.rb', line 20

def run
  unless port_open? (Options::LOCAL_HOSTS[@bind_addr] || @bind_addr), @port
    $LOG.error "#{Options::LOCAL_HOSTS[@bind_addr] || @bind_addr}:#{@port} not available for server" if $LOG.error?
    abort
  end
  url = %(http://#{Options::LOCAL_HOSTS[@bind_addr] || @bind_addr}:#{@port})
  msg = %(Starting preview server at #{url} (Press Ctrl-C to shutdown))
  $LOG.info %(#{'*' * msg.length}\n#{msg}\n#{'*' * msg.length}\n) if $LOG.info?

  path = @path
  generate_on_access = @generate_on_access
  app = ::Rack::Builder.new do
    use Awestruct::Rack::GenerateOnAccess if generate_on_access
    map "/" do
      run Awestruct::Rack::App.new( path )
    end
  end

    ::Rack::Server::start( :app => app,
                          :Port => @port,
                          :Host => @bind_addr
                         )
end