File: restserver.rb

package info (click to toggle)
ruby-moneta 1.6.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,776 kB
  • sloc: ruby: 13,201; sh: 178; makefile: 7
file content (44 lines) | stat: -rw-r--r-- 810 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
require 'faraday'
require 'rack'
require 'rack/moneta_rest'
require 'webrick'

class MonetaRestServerShutdown < StandardError; end

def start_restserver(port)
  server = Rack::Server.new(
    :app => Rack::Builder.app do
      use Rack::Lint
      map '/moneta' do
        run Rack::MonetaRest.new(:Memory)
      end
    end,
    :environment => 'none',
    :server => :webrick,
    :Port => port,
    :AccessLog => [],
    :Logger => WEBrick::Log.new($stderr, WEBrick::BasicLog::ERROR)
  )

  Thread.start { server.start }

  begin
    Faraday.get("http://127.0.0.1:#{port}")
  rescue Faraday::ConnectionFailed, Errno::EBADF
    tries ||= 5
    tries -= 1
    if tries > 0
      sleep 0.1
      retry
    else
      raise
    end
  end

  server
end

def stop_restserver(server)
  server.server.shutdown
end