Added -c/--charset option to WEBrick controller, so you can specify a default charset (which without changes is UTF-8) #2084 [wejn@box.cz]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2173 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2005-09-09 08:59:07 +00:00
parent 0faca07056
commit 0cd7e6c1e0
3 changed files with 18 additions and 1 deletions

@ -1,5 +1,7 @@
*SVN*
* Added -c/--charset option to WEBrick controller, so you can specify a default charset (which without changes is UTF-8) #2084 [wejn@box.cz]
* Make the default stats task extendable by modifying the STATS_DIRECTORIES constant
* Allow the selected environment to define RAILS_DEFAULT_LOGGER, and have Rails::Initializer use it if it exists.

@ -8,7 +8,8 @@ OPTIONS = {
:ip => "0.0.0.0",
:environment => "development",
:server_root => File.expand_path(File.dirname(__FILE__) + "/../public/"),
:server_type => WEBrick::SimpleServer
:server_type => WEBrick::SimpleServer,
:charset => "UTF-8"
}
ARGV.options do |opts|
@ -30,6 +31,10 @@ ARGV.options do |opts|
"Make Rails run as a Daemon (only works if fork is available -- meaning on *nix)."
) { OPTIONS[:server_type] = WEBrick::Daemon }
opts.on("-c", "--charset=charset", String,
"Set default charset for output.",
"Default: UTF-8") { |OPTIONS[:charset]| }
opts.separator ""
opts.on("-h", "--help",

@ -109,6 +109,8 @@ def handle_dispatch(req, res, origin = nil)
)
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(", ") }
@ -138,6 +140,14 @@ def extract_header_and_body(data)
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]