reel-rack 0.0.1.pre → 0.0.1.pre2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|