diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2009-04-23 01:09:27 +0100 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2009-04-23 01:09:27 +0100 |
commit | 5a1fe9039b33414b7088813712e03bbe38567cff (patch) | |
tree | 10e3a15c06494dd09c0324dca894ddcbb68ce582 /actionpack/lib/action_dispatch | |
parent | 3384f073e35c5391deaeb209a62a485a0c4dd7b1 (diff) | |
parent | 7f6779c1d5e4ec7f642839caa7e86320720f77c8 (diff) | |
download | rails-5a1fe9039b33414b7088813712e03bbe38567cff.tar.gz rails-5a1fe9039b33414b7088813712e03bbe38567cff.tar.bz2 rails-5a1fe9039b33414b7088813712e03bbe38567cff.zip |
Merge commit 'mainstream/master'
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/params_parser.rb | 2 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/rewindable_input.rb | 25 |
2 files changed, 10 insertions, 17 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/params_parser.rb b/actionpack/lib/action_dispatch/middleware/params_parser.rb index 6df572268c..abaee2829e 100644 --- a/actionpack/lib/action_dispatch/middleware/params_parser.rb +++ b/actionpack/lib/action_dispatch/middleware/params_parser.rb @@ -1,3 +1,5 @@ +require 'active_support/json' + module ActionDispatch class ParamsParser ActionController::Base.param_parsers[Mime::XML] = :xml_simple diff --git a/actionpack/lib/action_dispatch/middleware/rewindable_input.rb b/actionpack/lib/action_dispatch/middleware/rewindable_input.rb index 725414efc4..c818f28cce 100644 --- a/actionpack/lib/action_dispatch/middleware/rewindable_input.rb +++ b/actionpack/lib/action_dispatch/middleware/rewindable_input.rb @@ -1,27 +1,18 @@ module ActionDispatch class RewindableInput - class RewindableIO < ActiveSupport::BasicObject - def initialize(io) - @io = io - @rewindable = io.is_a?(::StringIO) - end - - def method_missing(method, *args, &block) - unless @rewindable - @io = ::StringIO.new(@io.read) - @rewindable = true - end - - @io.__send__(method, *args, &block) - end - end - def initialize(app) @app = app end def call(env) - env['rack.input'] = RewindableIO.new(env['rack.input']) + begin + env['rack.input'].rewind + rescue NoMethodError, Errno::ESPIPE + # Handles exceptions raised by input streams that cannot be rewound + # such as when using plain CGI under Apache + env['rack.input'] = StringIO.new(env['rack.input'].read) + end + @app.call(env) end end |