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:
parent
0faca07056
commit
0cd7e6c1e0
@ -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]
|
||||
|
Loading…
Reference in New Issue
Block a user