reel-rack 0.0.1.pre → 0.0.1.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rack/handler/reel.rb +2 -12
- data/lib/reel/rack/cli.rb +38 -2
- data/lib/reel/rack/server.rb +11 -2
- data/lib/reel/rack/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43b21d6af7dcc1fe337503181c1db02b1872811f
|
4
|
+
data.tar.gz: 6e8577ce53c98f06345be8ec201b99cbb1c33982
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd2c574401da814bf72f86971a958a04bc0cc196e8d02d183b14854e74c9a69d9426cc7b1cb7686079deeea2ad81dbeb72f056c3901ffee57e0a2f1c3415a414
|
7
|
+
data.tar.gz: 263c1f3be49b9cb573a012d65f34b5c8e25dfad80bab99b1dd8143b0eef4a3e4c51355a23a0857a6c6e759683b30fcf04ae8e99c3d552b1acad8973a9152b8bb
|
data/lib/rack/handler/reel.rb
CHANGED
@@ -12,16 +12,8 @@ module Rack
|
|
12
12
|
def self.run(app, options = {})
|
13
13
|
options = DEFAULT_OPTIONS.merge(options)
|
14
14
|
|
15
|
-
unless options[:quiet]
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
if options[:environment]
|
20
|
-
ENV['RACK_ENV'] = options[:environment].to_s
|
21
|
-
end
|
22
|
-
|
23
|
-
Celluloid.logger.info "A Reel good HTTP server! (Codename \"#{::Reel::CODENAME}\")"
|
24
|
-
Celluloid.logger.info "Listening on #{options[:host]}:#{options[:port]}"
|
15
|
+
app = Rack::CommonLogger.new(app, STDOUT) unless options[:quiet]
|
16
|
+
ENV['RACK_ENV'] = options[:environment].to_s if options[:environment]
|
25
17
|
|
26
18
|
supervisor = ::Reel::Rack::Server.supervise_as(:reel_rack_server, app, options)
|
27
19
|
|
@@ -30,8 +22,6 @@ module Rack
|
|
30
22
|
rescue Interrupt
|
31
23
|
Celluloid.logger.info "Interrupt received... shutting down"
|
32
24
|
supervisor.terminate
|
33
|
-
Celluloid.join(supervisor)
|
34
|
-
Celluloid.logger.info "That's all, folks!"
|
35
25
|
end
|
36
26
|
end
|
37
27
|
end
|
data/lib/reel/rack/cli.rb
CHANGED
@@ -1,16 +1,52 @@
|
|
1
1
|
require 'reel/rack'
|
2
|
+
require 'optparse'
|
2
3
|
|
3
4
|
module Reel
|
4
5
|
module Rack
|
5
6
|
class CLI
|
6
7
|
def initialize(argv)
|
7
8
|
@argv = argv
|
8
|
-
@
|
9
|
+
@options = {
|
10
|
+
addr: "localhost",
|
11
|
+
port: 3000,
|
12
|
+
quiet: false,
|
13
|
+
rackup: "config.ru"
|
14
|
+
}
|
15
|
+
parser
|
16
|
+
end
|
17
|
+
|
18
|
+
def parser
|
19
|
+
@parser ||= OptionParser.new do |o|
|
20
|
+
o.banner = "reel-rack <options> <rackup file>"
|
21
|
+
|
22
|
+
o.on "-a", "--addr ADDR", "Address to listen on (default #{@options[:addr]})" do |addr|
|
23
|
+
@options[:addr] = addr
|
24
|
+
end
|
25
|
+
|
26
|
+
o.on "-p", "--port PORT", "Port to bind to (default #{@options[:port]})" do |port|
|
27
|
+
@options[:port] = port
|
28
|
+
end
|
29
|
+
|
30
|
+
o.on "-q", "--quiet", "Suppress normal logging output" do
|
31
|
+
@options[:quiet] = true
|
32
|
+
end
|
33
|
+
|
34
|
+
o.on_tail "-h", "--help", "Show help" do
|
35
|
+
STDOUT.puts @parser
|
36
|
+
exit 1
|
37
|
+
end
|
38
|
+
end
|
9
39
|
end
|
10
40
|
|
11
41
|
def run
|
12
|
-
|
42
|
+
@parser.parse! @argv
|
43
|
+
@options[:rackup] = @argv.shift if @argv.last
|
44
|
+
|
45
|
+
app, options = ::Rack::Builder.parse_file(@options[:rackup])
|
46
|
+
options.merge!(@options)
|
13
47
|
::Rack::Handler::Reel.run(app, options)
|
48
|
+
|
49
|
+
Celluloid.logger.info "That's all, folks!"
|
14
50
|
end
|
15
51
|
end
|
16
52
|
end
|
data/lib/reel/rack/server.rb
CHANGED
@@ -7,11 +7,17 @@ require 'rack'
|
|
7
7
|
module Reel
|
8
8
|
module Rack
|
9
9
|
class Server < Server
|
10
|
+
include Celluloid::Logger
|
11
|
+
|
10
12
|
attr_reader :app
|
13
|
+
|
11
14
|
def initialize(app, options)
|
12
15
|
raise ArgumentError, "no host given" unless options[:host]
|
13
16
|
raise ArgumentError, "no port given" unless options[:port]
|
14
17
|
|
18
|
+
info "A Reel good HTTP server! (Codename \"#{::Reel::CODENAME}\")"
|
19
|
+
info "Listening on http://#{options[:host]}:#{options[:port]}"
|
20
|
+
|
15
21
|
super(options[:host], options[:port], &method(:on_connection))
|
16
22
|
@app = app
|
17
23
|
end
|
@@ -35,12 +41,15 @@ module Reel
|
|
35
41
|
|
36
42
|
status, headers, body = app.call ::Rack::MockRequest.env_for(request.url, options)
|
37
43
|
|
38
|
-
if body.respond_to?
|
44
|
+
if body.respond_to?(:to_str)
|
45
|
+
request.respond status_symbol(status), headers, body.to_str
|
46
|
+
elsif body.respond_to?(:each)
|
39
47
|
request.respond status_symbol(status), headers.merge(:transfer_encoding => :chunked)
|
40
48
|
body.each { |chunk| request << chunk }
|
41
49
|
request.finish_response
|
42
50
|
else
|
43
|
-
|
51
|
+
Logger.error("don't know how to render: #{body.inspect}")
|
52
|
+
request.respond :internal_server_error, "An error occurred processing your request"
|
44
53
|
end
|
45
54
|
|
46
55
|
body.close if body.respond_to? :close
|
data/lib/reel/rack/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reel-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Arcieri
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: reel
|