Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
746a3856
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
746a3856
编写于
6月 21, 2010
作者:
J
José Valim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove unused webrick_server file.
上级
b5fe014f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
0 addition
and
156 deletion
+0
-156
railties/lib/rails/webrick_server.rb
railties/lib/rails/webrick_server.rb
+0
-156
未找到文件。
railties/lib/rails/webrick_server.rb
已删除
100644 → 0
浏览文件 @
b5fe014f
# Donated by Florian Gross
require
'webrick'
require
'cgi'
require
'stringio'
require
'dispatcher'
include
WEBrick
class
CGI
#:nodoc:
def
stdinput
@stdin
||
$stdin
end
def
env_table
@env_table
||
ENV
end
def
initialize
(
type
=
"query"
,
table
=
nil
,
stdin
=
nil
)
@env_table
,
@stdin
=
table
,
stdin
if
defined?
(
MOD_RUBY
)
&&
!
ENV
.
key?
(
"GATEWAY_INTERFACE"
)
Apache
.
request
.
setup_cgi_env
end
extend
QueryExtension
@multipart
=
false
if
defined?
(
CGI_PARAMS
)
warn
"do not use CGI_PARAMS and CGI_COOKIES"
@params
=
CGI_PARAMS
.
dup
@cookies
=
CGI_COOKIES
.
dup
else
initialize_query
()
# set @params, @cookies
end
@output_cookies
=
nil
@output_hidden
=
nil
end
end
# A custom dispatch servlet for use with WEBrick. It dispatches requests
# (using the Rails Dispatcher) to the appropriate controller/action. By default,
# it restricts WEBrick to a managing a single Rails request at a time, but you
# can change this behavior by setting ActionController::Base.allow_concurrency
# to true.
class
DispatchServlet
<
WEBrick
::
HTTPServlet
::
AbstractServlet
# Start the WEBrick server with the given options, mounting the
# DispatchServlet at <tt>/</tt>.
def
self
.
dispatch
(
options
=
{})
Socket
.
do_not_reverse_lookup
=
true
# patch for OS X
params
=
{
:Port
=>
options
[
:port
].
to_i
,
:ServerType
=>
options
[
:server_type
],
:BindAddress
=>
options
[
:ip
]
}
params
[
:MimeTypes
]
=
options
[
:mime_types
]
if
options
[
:mime_types
]
server
=
WEBrick
::
HTTPServer
.
new
(
params
)
server
.
mount
(
'/'
,
DispatchServlet
,
options
)
trap
(
"INT"
)
{
server
.
shutdown
}
server
.
start
end
def
initialize
(
server
,
options
)
#:nodoc:
@server_options
=
options
@file_handler
=
WEBrick
::
HTTPServlet
::
FileHandler
.
new
(
server
,
options
[
:server_root
])
# Change to the Rails.root, since Webrick::Daemon.start does a Dir::cwd("/")
# OPTIONS['working_directory'] is an absolute path of the Rails.root, set in railties/lib/commands/servers/webrick.rb
Dir
.
chdir
(
OPTIONS
[
'working_directory'
])
if
defined?
(
OPTIONS
)
&&
File
.
directory?
(
OPTIONS
[
'working_directory'
])
super
end
def
service
(
req
,
res
)
#:nodoc:
unless
handle_file
(
req
,
res
)
unless
handle_dispatch
(
req
,
res
)
raise
WEBrick
::
HTTPStatus
::
NotFound
,
"`
#{
req
.
path
}
' not found."
end
end
end
def
handle_file
(
req
,
res
)
#:nodoc:
begin
req
=
req
.
dup
path
=
req
.
path
.
dup
# Add .html if the last path piece has no . in it
path
<<
'.html'
if
path
!=
'/'
&&
(
%r{(^|/)[^./]+$}
=~
path
)
path
.
gsub!
(
'+'
,
' '
)
# Unescape + since FileHandler doesn't do so.
req
.
instance_variable_set
(
:@path_info
,
path
)
# Set the modified path...
@file_handler
.
send
(
:service
,
req
,
res
)
return
true
rescue
HTTPStatus
::
PartialContent
,
HTTPStatus
::
NotModified
=>
err
res
.
set_error
(
err
)
return
true
rescue
=>
err
return
false
end
end
def
handle_dispatch
(
req
,
res
,
origin
=
nil
)
#:nodoc:
data
=
StringIO
.
new
Dispatcher
.
dispatch
(
CGI
.
new
(
"query"
,
create_env_table
(
req
,
origin
),
StringIO
.
new
(
req
.
body
||
""
)),
ActionController
::
CgiRequest
::
DEFAULT_SESSION_OPTIONS
,
data
)
header
,
body
=
extract_header_and_body
(
data
)
set_charset
(
header
)
assign_status
(
res
,
header
)
res
.
cookies
.
concat
(
header
.
delete
(
'set-cookie'
)
||
[])
header
.
each
{
|
key
,
val
|
res
[
key
]
=
val
.
join
(
", "
)
}
res
.
body
=
body
return
true
rescue
=>
err
p
err
,
err
.
backtrace
return
false
end
private
def
create_env_table
(
req
,
origin
)
env
=
req
.
meta_vars
.
clone
env
.
delete
"SCRIPT_NAME"
env
[
"QUERY_STRING"
]
=
req
.
request_uri
.
query
env
[
"REQUEST_URI"
]
=
origin
if
origin
return
env
end
def
extract_header_and_body
(
data
)
data
.
rewind
data
=
data
.
read
raw_header
,
body
=
*
data
.
split
(
/^[\xd\xa]{2}/on
,
2
)
header
=
WEBrick
::
HTTPUtils
::
parse_header
(
raw_header
)
return
header
,
body
end
def
set_charset
(
header
)
ct
=
header
[
"content-type"
]
if
ct
.
any?
{
|
x
|
x
=~
/^text\//
}
&&
!
ct
.
any?
{
|
x
|
x
=~
/charset=/
}
ch
=
@server_options
[
:charset
]
||
"UTF-8"
ct
.
find
{
|
x
|
x
=~
/^text\//
}
<<
(
"; charset="
+
ch
)
end
end
def
assign_status
(
res
,
header
)
if
/^(\d+)/
=~
header
[
'status'
][
0
]
res
.
status
=
$1
.
to_i
header
.
delete
(
'status'
)
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录