egalite 0.0.7 → 1.0.0
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.
- data/README.md +19 -0
- data/lib/egalite/version.rb +1 -1
- data/lib/egalite.rb +11 -2
- data/test/test_auth.rb +1 -2
- data/test/test_blank.rb +2 -3
- data/test/test_errorconsole.rb +5 -5
- data/test/test_keitai.rb +2 -2
- data/test/test_m17n.rb +1 -3
- data/test/test_template.rb +11 -0
- metadata +4 -87
- data/auth/basic.rb +0 -32
- data/blank.rb +0 -53
- data/egalite.rb +0 -742
- data/errorconsole.rb +0 -77
- data/helper.rb +0 -251
- data/keitai/keitai.rb +0 -107
- data/keitai/ketai.rb +0 -11
- data/keitai/rack/ketai/carrier/abstract.rb +0 -131
- data/keitai/rack/ketai/carrier/au.rb +0 -78
- data/keitai/rack/ketai/carrier/docomo.rb +0 -80
- data/keitai/rack/ketai/carrier/emoji/ausjisstrtoemojiid.rb +0 -1391
- data/keitai/rack/ketai/carrier/emoji/docomosjisstrtoemojiid.rb +0 -759
- data/keitai/rack/ketai/carrier/emoji/emojidata.rb +0 -836
- data/keitai/rack/ketai/carrier/emoji/softbankutf8strtoemojiid.rb +0 -1119
- data/keitai/rack/ketai/carrier/emoji/softbankwebcodetoutf8str.rb +0 -499
- data/keitai/rack/ketai/carrier/iphone.rb +0 -8
- data/keitai/rack/ketai/carrier/softbank.rb +0 -82
- data/keitai/rack/ketai/carrier.rb +0 -17
- data/keitai/rack/ketai/middleware.rb +0 -24
- data/m17n.rb +0 -193
- data/rack/auth/abstract/handler.rb +0 -37
- data/rack/auth/abstract/request.rb +0 -37
- data/rack/auth/basic.rb +0 -58
- data/rack/auth/digest/md5.rb +0 -124
- data/rack/auth/digest/nonce.rb +0 -51
- data/rack/auth/digest/params.rb +0 -55
- data/rack/auth/digest/request.rb +0 -40
- data/rack/builder.rb +0 -80
- data/rack/cascade.rb +0 -41
- data/rack/chunked.rb +0 -49
- data/rack/commonlogger.rb +0 -49
- data/rack/conditionalget.rb +0 -47
- data/rack/config.rb +0 -15
- data/rack/content_length.rb +0 -29
- data/rack/content_type.rb +0 -23
- data/rack/deflater.rb +0 -96
- data/rack/directory.rb +0 -157
- data/rack/etag.rb +0 -32
- data/rack/file.rb +0 -92
- data/rack/handler/cgi.rb +0 -62
- data/rack/handler/evented_mongrel.rb +0 -8
- data/rack/handler/fastcgi.rb +0 -89
- data/rack/handler/lsws.rb +0 -63
- data/rack/handler/mongrel.rb +0 -90
- data/rack/handler/scgi.rb +0 -59
- data/rack/handler/swiftiplied_mongrel.rb +0 -8
- data/rack/handler/thin.rb +0 -18
- data/rack/handler/webrick.rb +0 -73
- data/rack/handler.rb +0 -88
- data/rack/head.rb +0 -19
- data/rack/lint.rb +0 -567
- data/rack/lobster.rb +0 -65
- data/rack/lock.rb +0 -16
- data/rack/logger.rb +0 -20
- data/rack/methodoverride.rb +0 -27
- data/rack/mime.rb +0 -208
- data/rack/mock.rb +0 -190
- data/rack/nulllogger.rb +0 -18
- data/rack/recursive.rb +0 -61
- data/rack/reloader.rb +0 -109
- data/rack/request.rb +0 -273
- data/rack/response.rb +0 -150
- data/rack/rewindable_input.rb +0 -103
- data/rack/runtime.rb +0 -27
- data/rack/sendfile.rb +0 -144
- data/rack/server.rb +0 -271
- data/rack/session/abstract/id.rb +0 -140
- data/rack/session/cookie.rb +0 -90
- data/rack/session/memcache.rb +0 -119
- data/rack/session/pool.rb +0 -100
- data/rack/showexceptions.rb +0 -349
- data/rack/showstatus.rb +0 -106
- data/rack/static.rb +0 -38
- data/rack/urlmap.rb +0 -55
- data/rack/utils.rb +0 -662
- data/rack.rb +0 -81
- data/route.rb +0 -231
- data/sendmail.rb +0 -222
- data/sequel_helper.rb +0 -20
- data/session.rb +0 -132
- data/stringify_hash.rb +0 -63
- data/support.rb +0 -35
- data/template.rb +0 -287
data/rack/handler/fastcgi.rb
DELETED
@@ -1,89 +0,0 @@
|
|
1
|
-
require 'fcgi'
|
2
|
-
require 'socket'
|
3
|
-
require 'rack/content_length'
|
4
|
-
require 'rack/rewindable_input'
|
5
|
-
|
6
|
-
if defined? FCGI::Stream
|
7
|
-
class FCGI::Stream
|
8
|
-
alias _rack_read_without_buffer read
|
9
|
-
|
10
|
-
def read(n, buffer=nil)
|
11
|
-
buf = _rack_read_without_buffer n
|
12
|
-
buffer.replace(buf.to_s) if buffer
|
13
|
-
buf
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
module Rack
|
19
|
-
module Handler
|
20
|
-
class FastCGI
|
21
|
-
def self.run(app, options={})
|
22
|
-
file = options[:File] and STDIN.reopen(UNIXServer.new(file))
|
23
|
-
port = options[:Port] and STDIN.reopen(TCPServer.new(port))
|
24
|
-
FCGI.each { |request|
|
25
|
-
serve request, app
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.serve(request, app)
|
30
|
-
app = Rack::ContentLength.new(app)
|
31
|
-
|
32
|
-
env = request.env
|
33
|
-
env.delete "HTTP_CONTENT_LENGTH"
|
34
|
-
|
35
|
-
env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
|
36
|
-
|
37
|
-
rack_input = RewindableInput.new(request.in)
|
38
|
-
|
39
|
-
env.update({"rack.version" => Rack::VERSION,
|
40
|
-
"rack.input" => rack_input,
|
41
|
-
"rack.errors" => request.err,
|
42
|
-
|
43
|
-
"rack.multithread" => false,
|
44
|
-
"rack.multiprocess" => true,
|
45
|
-
"rack.run_once" => false,
|
46
|
-
|
47
|
-
"rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http"
|
48
|
-
})
|
49
|
-
|
50
|
-
env["QUERY_STRING"] ||= ""
|
51
|
-
env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
|
52
|
-
env["REQUEST_PATH"] ||= "/"
|
53
|
-
env.delete "CONTENT_TYPE" if env["CONTENT_TYPE"] == ""
|
54
|
-
env.delete "CONTENT_LENGTH" if env["CONTENT_LENGTH"] == ""
|
55
|
-
|
56
|
-
begin
|
57
|
-
status, headers, body = app.call(env)
|
58
|
-
begin
|
59
|
-
send_headers request.out, status, headers
|
60
|
-
send_body request.out, body
|
61
|
-
ensure
|
62
|
-
body.close if body.respond_to? :close
|
63
|
-
end
|
64
|
-
ensure
|
65
|
-
rack_input.close
|
66
|
-
request.finish
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.send_headers(out, status, headers)
|
71
|
-
out.print "Status: #{status}\r\n"
|
72
|
-
headers.each { |k, vs|
|
73
|
-
vs.split("\n").each { |v|
|
74
|
-
out.print "#{k}: #{v}\r\n"
|
75
|
-
}
|
76
|
-
}
|
77
|
-
out.print "\r\n"
|
78
|
-
out.flush
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.send_body(out, body)
|
82
|
-
body.each { |part|
|
83
|
-
out.print part
|
84
|
-
out.flush
|
85
|
-
}
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
data/rack/handler/lsws.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'lsapi'
|
2
|
-
require 'rack/content_length'
|
3
|
-
require 'rack/rewindable_input'
|
4
|
-
|
5
|
-
module Rack
|
6
|
-
module Handler
|
7
|
-
class LSWS
|
8
|
-
def self.run(app, options=nil)
|
9
|
-
while LSAPI.accept != nil
|
10
|
-
serve app
|
11
|
-
end
|
12
|
-
end
|
13
|
-
def self.serve(app)
|
14
|
-
app = Rack::ContentLength.new(app)
|
15
|
-
|
16
|
-
env = ENV.to_hash
|
17
|
-
env.delete "HTTP_CONTENT_LENGTH"
|
18
|
-
env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
|
19
|
-
|
20
|
-
rack_input = RewindableInput.new($stdin.read.to_s)
|
21
|
-
|
22
|
-
env.update(
|
23
|
-
"rack.version" => Rack::VERSION,
|
24
|
-
"rack.input" => rack_input,
|
25
|
-
"rack.errors" => $stderr,
|
26
|
-
"rack.multithread" => false,
|
27
|
-
"rack.multiprocess" => true,
|
28
|
-
"rack.run_once" => false,
|
29
|
-
"rack.url_scheme" => ["yes", "on", "1"].include?(ENV["HTTPS"]) ? "https" : "http"
|
30
|
-
)
|
31
|
-
|
32
|
-
env["QUERY_STRING"] ||= ""
|
33
|
-
env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
|
34
|
-
env["REQUEST_PATH"] ||= "/"
|
35
|
-
status, headers, body = app.call(env)
|
36
|
-
begin
|
37
|
-
send_headers status, headers
|
38
|
-
send_body body
|
39
|
-
ensure
|
40
|
-
body.close if body.respond_to? :close
|
41
|
-
end
|
42
|
-
ensure
|
43
|
-
rack_input.close
|
44
|
-
end
|
45
|
-
def self.send_headers(status, headers)
|
46
|
-
print "Status: #{status}\r\n"
|
47
|
-
headers.each { |k, vs|
|
48
|
-
vs.split("\n").each { |v|
|
49
|
-
print "#{k}: #{v}\r\n"
|
50
|
-
}
|
51
|
-
}
|
52
|
-
print "\r\n"
|
53
|
-
STDOUT.flush
|
54
|
-
end
|
55
|
-
def self.send_body(body)
|
56
|
-
body.each { |part|
|
57
|
-
print part
|
58
|
-
STDOUT.flush
|
59
|
-
}
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
data/rack/handler/mongrel.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
require 'mongrel'
|
2
|
-
require 'stringio'
|
3
|
-
require 'rack/content_length'
|
4
|
-
require 'rack/chunked'
|
5
|
-
|
6
|
-
module Rack
|
7
|
-
module Handler
|
8
|
-
class Mongrel < ::Mongrel::HttpHandler
|
9
|
-
def self.run(app, options={})
|
10
|
-
server = ::Mongrel::HttpServer.new(
|
11
|
-
options[:Host] || '0.0.0.0',
|
12
|
-
options[:Port] || 8080,
|
13
|
-
options[:num_processors] || 950,
|
14
|
-
options[:throttle] || 0,
|
15
|
-
options[:timeout] || 60)
|
16
|
-
# Acts like Rack::URLMap, utilizing Mongrel's own path finding methods.
|
17
|
-
# Use is similar to #run, replacing the app argument with a hash of
|
18
|
-
# { path=>app, ... } or an instance of Rack::URLMap.
|
19
|
-
if options[:map]
|
20
|
-
if app.is_a? Hash
|
21
|
-
app.each do |path, appl|
|
22
|
-
path = '/'+path unless path[0] == ?/
|
23
|
-
server.register(path, Rack::Handler::Mongrel.new(appl))
|
24
|
-
end
|
25
|
-
elsif app.is_a? URLMap
|
26
|
-
app.instance_variable_get(:@mapping).each do |(host, path, appl)|
|
27
|
-
next if !host.nil? && !options[:Host].nil? && options[:Host] != host
|
28
|
-
path = '/'+path unless path[0] == ?/
|
29
|
-
server.register(path, Rack::Handler::Mongrel.new(appl))
|
30
|
-
end
|
31
|
-
else
|
32
|
-
raise ArgumentError, "first argument should be a Hash or URLMap"
|
33
|
-
end
|
34
|
-
else
|
35
|
-
server.register('/', Rack::Handler::Mongrel.new(app))
|
36
|
-
end
|
37
|
-
yield server if block_given?
|
38
|
-
server.run.join
|
39
|
-
end
|
40
|
-
|
41
|
-
def initialize(app)
|
42
|
-
@app = Rack::Chunked.new(Rack::ContentLength.new(app))
|
43
|
-
end
|
44
|
-
|
45
|
-
def process(request, response)
|
46
|
-
env = {}.replace(request.params)
|
47
|
-
env.delete "HTTP_CONTENT_TYPE"
|
48
|
-
env.delete "HTTP_CONTENT_LENGTH"
|
49
|
-
|
50
|
-
env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
|
51
|
-
|
52
|
-
rack_input = request.body || StringIO.new('')
|
53
|
-
rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
|
54
|
-
|
55
|
-
env.update({"rack.version" => Rack::VERSION,
|
56
|
-
"rack.input" => rack_input,
|
57
|
-
"rack.errors" => $stderr,
|
58
|
-
|
59
|
-
"rack.multithread" => true,
|
60
|
-
"rack.multiprocess" => false, # ???
|
61
|
-
"rack.run_once" => false,
|
62
|
-
|
63
|
-
"rack.url_scheme" => "http",
|
64
|
-
})
|
65
|
-
env["QUERY_STRING"] ||= ""
|
66
|
-
|
67
|
-
status, headers, body = @app.call(env)
|
68
|
-
|
69
|
-
begin
|
70
|
-
response.status = status.to_i
|
71
|
-
response.send_status(nil)
|
72
|
-
|
73
|
-
headers.each { |k, vs|
|
74
|
-
vs.split("\n").each { |v|
|
75
|
-
response.header[k] = v
|
76
|
-
}
|
77
|
-
}
|
78
|
-
response.send_header
|
79
|
-
|
80
|
-
body.each { |part|
|
81
|
-
response.write part
|
82
|
-
response.socket.flush
|
83
|
-
}
|
84
|
-
ensure
|
85
|
-
body.close if body.respond_to? :close
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
data/rack/handler/scgi.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'scgi'
|
2
|
-
require 'stringio'
|
3
|
-
require 'rack/content_length'
|
4
|
-
require 'rack/chunked'
|
5
|
-
|
6
|
-
module Rack
|
7
|
-
module Handler
|
8
|
-
class SCGI < ::SCGI::Processor
|
9
|
-
attr_accessor :app
|
10
|
-
|
11
|
-
def self.run(app, options=nil)
|
12
|
-
new(options.merge(:app=>app,
|
13
|
-
:host=>options[:Host],
|
14
|
-
:port=>options[:Port],
|
15
|
-
:socket=>options[:Socket])).listen
|
16
|
-
end
|
17
|
-
|
18
|
-
def initialize(settings = {})
|
19
|
-
@app = Rack::Chunked.new(Rack::ContentLength.new(settings[:app]))
|
20
|
-
super(settings)
|
21
|
-
end
|
22
|
-
|
23
|
-
def process_request(request, input_body, socket)
|
24
|
-
env = {}.replace(request)
|
25
|
-
env.delete "HTTP_CONTENT_TYPE"
|
26
|
-
env.delete "HTTP_CONTENT_LENGTH"
|
27
|
-
env["REQUEST_PATH"], env["QUERY_STRING"] = env["REQUEST_URI"].split('?', 2)
|
28
|
-
env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
|
29
|
-
env["PATH_INFO"] = env["REQUEST_PATH"]
|
30
|
-
env["QUERY_STRING"] ||= ""
|
31
|
-
env["SCRIPT_NAME"] = ""
|
32
|
-
|
33
|
-
rack_input = StringIO.new(input_body)
|
34
|
-
rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
|
35
|
-
|
36
|
-
env.update({"rack.version" => Rack::VERSION,
|
37
|
-
"rack.input" => rack_input,
|
38
|
-
"rack.errors" => $stderr,
|
39
|
-
"rack.multithread" => true,
|
40
|
-
"rack.multiprocess" => true,
|
41
|
-
"rack.run_once" => false,
|
42
|
-
|
43
|
-
"rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http"
|
44
|
-
})
|
45
|
-
status, headers, body = app.call(env)
|
46
|
-
begin
|
47
|
-
socket.write("Status: #{status}\r\n")
|
48
|
-
headers.each do |k, vs|
|
49
|
-
vs.split("\n").each { |v| socket.write("#{k}: #{v}\r\n")}
|
50
|
-
end
|
51
|
-
socket.write("\r\n")
|
52
|
-
body.each {|s| socket.write(s)}
|
53
|
-
ensure
|
54
|
-
body.close if body.respond_to? :close
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
data/rack/handler/thin.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require "thin"
|
2
|
-
require "rack/content_length"
|
3
|
-
require "rack/chunked"
|
4
|
-
|
5
|
-
module Rack
|
6
|
-
module Handler
|
7
|
-
class Thin
|
8
|
-
def self.run(app, options={})
|
9
|
-
app = Rack::Chunked.new(Rack::ContentLength.new(app))
|
10
|
-
server = ::Thin::Server.new(options[:Host] || '0.0.0.0',
|
11
|
-
options[:Port] || 8080,
|
12
|
-
app)
|
13
|
-
yield server if block_given?
|
14
|
-
server.start
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/rack/handler/webrick.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'webrick'
|
2
|
-
require 'stringio'
|
3
|
-
require 'rack/content_length'
|
4
|
-
|
5
|
-
module Rack
|
6
|
-
module Handler
|
7
|
-
class WEBrick < ::WEBrick::HTTPServlet::AbstractServlet
|
8
|
-
def self.run(app, options={})
|
9
|
-
options[:BindAddress] = options.delete(:Host) if options[:Host]
|
10
|
-
@server = ::WEBrick::HTTPServer.new(options)
|
11
|
-
@server.mount "/", Rack::Handler::WEBrick, app
|
12
|
-
yield @server if block_given?
|
13
|
-
@server.start
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.shutdown
|
17
|
-
@server.shutdown
|
18
|
-
@server = nil
|
19
|
-
end
|
20
|
-
|
21
|
-
def initialize(server, app)
|
22
|
-
super server
|
23
|
-
@app = Rack::ContentLength.new(app)
|
24
|
-
end
|
25
|
-
|
26
|
-
def service(req, res)
|
27
|
-
env = req.meta_vars
|
28
|
-
env.delete_if { |k, v| v.nil? }
|
29
|
-
|
30
|
-
rack_input = StringIO.new(req.body.to_s)
|
31
|
-
rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
|
32
|
-
|
33
|
-
env.update({"rack.version" => Rack::VERSION,
|
34
|
-
"rack.input" => rack_input,
|
35
|
-
"rack.errors" => $stderr,
|
36
|
-
|
37
|
-
"rack.multithread" => true,
|
38
|
-
"rack.multiprocess" => false,
|
39
|
-
"rack.run_once" => false,
|
40
|
-
|
41
|
-
"rack.url_scheme" => ["yes", "on", "1"].include?(ENV["HTTPS"]) ? "https" : "http"
|
42
|
-
})
|
43
|
-
|
44
|
-
env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
|
45
|
-
env["QUERY_STRING"] ||= ""
|
46
|
-
env["REQUEST_PATH"] ||= "/"
|
47
|
-
unless env["PATH_INFO"] == ""
|
48
|
-
path, n = req.request_uri.path, env["SCRIPT_NAME"].length
|
49
|
-
env["PATH_INFO"] = path[n, path.length-n]
|
50
|
-
end
|
51
|
-
|
52
|
-
status, headers, body = @app.call(env)
|
53
|
-
begin
|
54
|
-
res.status = status.to_i
|
55
|
-
headers.each { |k, vs|
|
56
|
-
if k.downcase == "set-cookie"
|
57
|
-
res.cookies.concat vs.split("\n")
|
58
|
-
else
|
59
|
-
vs.split("\n").each { |v|
|
60
|
-
res[k] = v
|
61
|
-
}
|
62
|
-
end
|
63
|
-
}
|
64
|
-
body.each { |part|
|
65
|
-
res.body << part
|
66
|
-
}
|
67
|
-
ensure
|
68
|
-
body.close if body.respond_to? :close
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
data/rack/handler.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
module Rack
|
2
|
-
# *Handlers* connect web servers with Rack.
|
3
|
-
#
|
4
|
-
# Rack includes Handlers for Mongrel, WEBrick, FastCGI, CGI, SCGI
|
5
|
-
# and LiteSpeed.
|
6
|
-
#
|
7
|
-
# Handlers usually are activated by calling <tt>MyHandler.run(myapp)</tt>.
|
8
|
-
# A second optional hash can be passed to include server-specific
|
9
|
-
# configuration.
|
10
|
-
module Handler
|
11
|
-
def self.get(server)
|
12
|
-
return unless server
|
13
|
-
server = server.to_s
|
14
|
-
|
15
|
-
if klass = @handlers[server]
|
16
|
-
obj = Object
|
17
|
-
klass.split("::").each { |x| obj = obj.const_get(x) }
|
18
|
-
obj
|
19
|
-
else
|
20
|
-
try_require('rack/handler', server)
|
21
|
-
const_get(server)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.default(options = {})
|
26
|
-
# Guess.
|
27
|
-
if ENV.include?("PHP_FCGI_CHILDREN")
|
28
|
-
# We already speak FastCGI
|
29
|
-
options.delete :File
|
30
|
-
options.delete :Port
|
31
|
-
|
32
|
-
Rack::Handler::FastCGI
|
33
|
-
elsif ENV.include?("REQUEST_METHOD")
|
34
|
-
Rack::Handler::CGI
|
35
|
-
else
|
36
|
-
begin
|
37
|
-
Rack::Handler::Mongrel
|
38
|
-
rescue LoadError => e
|
39
|
-
Rack::Handler::WEBrick
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
# Transforms server-name constants to their canonical form as filenames,
|
45
|
-
# then tries to require them but silences the LoadError if not found
|
46
|
-
#
|
47
|
-
# Naming convention:
|
48
|
-
#
|
49
|
-
# Foo # => 'foo'
|
50
|
-
# FooBar # => 'foo_bar.rb'
|
51
|
-
# FooBAR # => 'foobar.rb'
|
52
|
-
# FOObar # => 'foobar.rb'
|
53
|
-
# FOOBAR # => 'foobar.rb'
|
54
|
-
# FooBarBaz # => 'foo_bar_baz.rb'
|
55
|
-
def self.try_require(prefix, const_name)
|
56
|
-
file = const_name.gsub(/^[A-Z]+/) { |pre| pre.downcase }.
|
57
|
-
gsub(/[A-Z]+[^A-Z]/, '_\&').downcase
|
58
|
-
|
59
|
-
require(::File.join(prefix, file))
|
60
|
-
rescue LoadError
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.register(server, klass)
|
64
|
-
@handlers ||= {}
|
65
|
-
@handlers[server] = klass
|
66
|
-
end
|
67
|
-
|
68
|
-
autoload :CGI, "rack/handler/cgi"
|
69
|
-
autoload :FastCGI, "rack/handler/fastcgi"
|
70
|
-
autoload :Mongrel, "rack/handler/mongrel"
|
71
|
-
autoload :EventedMongrel, "rack/handler/evented_mongrel"
|
72
|
-
autoload :SwiftipliedMongrel, "rack/handler/swiftiplied_mongrel"
|
73
|
-
autoload :WEBrick, "rack/handler/webrick"
|
74
|
-
autoload :LSWS, "rack/handler/lsws"
|
75
|
-
autoload :SCGI, "rack/handler/scgi"
|
76
|
-
autoload :Thin, "rack/handler/thin"
|
77
|
-
|
78
|
-
register 'cgi', 'Rack::Handler::CGI'
|
79
|
-
register 'fastcgi', 'Rack::Handler::FastCGI'
|
80
|
-
register 'mongrel', 'Rack::Handler::Mongrel'
|
81
|
-
register 'emongrel', 'Rack::Handler::EventedMongrel'
|
82
|
-
register 'smongrel', 'Rack::Handler::SwiftipliedMongrel'
|
83
|
-
register 'webrick', 'Rack::Handler::WEBrick'
|
84
|
-
register 'lsws', 'Rack::Handler::LSWS'
|
85
|
-
register 'scgi', 'Rack::Handler::SCGI'
|
86
|
-
register 'thin', 'Rack::Handler::Thin'
|
87
|
-
end
|
88
|
-
end
|
data/rack/head.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Rack
|
2
|
-
|
3
|
-
class Head
|
4
|
-
def initialize(app)
|
5
|
-
@app = app
|
6
|
-
end
|
7
|
-
|
8
|
-
def call(env)
|
9
|
-
status, headers, body = @app.call(env)
|
10
|
-
|
11
|
-
if env["REQUEST_METHOD"] == "HEAD"
|
12
|
-
[status, headers, []]
|
13
|
-
else
|
14
|
-
[status, headers, body]
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|