Skip to content
Browse files

Sync 'rails/rails/master'

  • Loading branch information...
2 parents f65333a + 9bcf01b commit b8fadd708b9850a77e1f64038763fffcff502499 @wycats wycats committed
View
2 actionpack/lib/action_controller.rb
@@ -33,6 +33,7 @@
gem 'rack', '>= 0.9.0'
require 'rack'
+require 'action_controller/rack_ext'
module ActionController
# TODO: Review explicit to see if they will automatically be handled by
@@ -79,7 +80,6 @@ def self.load_all!
autoload :UrlEncodedPairParser, 'action_controller/url_encoded_pair_parser'
autoload :UrlRewriter, 'action_controller/url_rewriter'
autoload :UrlWriter, 'action_controller/url_rewriter'
- autoload :VerbPiggybacking, 'action_controller/verb_piggybacking'
autoload :Verification, 'action_controller/verification'
module Assertions
View
11 actionpack/lib/action_controller/integration.rb
@@ -2,17 +2,6 @@
require 'uri'
require 'active_support/test_case'
-# Monkey patch Rack::Lint to support rewind
-module Rack
- class Lint
- class InputWrapper
- def rewind
- @input.rewind
- end
- end
- end
-end
-
module ActionController
module Integration #:nodoc:
# An integration Session instance represents a set of requests and responses
View
2 actionpack/lib/action_controller/middleware_stack.rb
@@ -32,6 +32,8 @@ def klass
else
@klass.to_s.constantize
end
+ rescue NameError
+ @klass
end
def active?
View
2 actionpack/lib/action_controller/middlewares.rb
@@ -19,4 +19,4 @@
end
use ActionController::RewindableInput
-use ActionController::VerbPiggybacking
+use Rack::MethodOverride
View
22 actionpack/lib/action_controller/rack_ext.rb
@@ -0,0 +1,22 @@
+module Rack
+ module Utils
+ module Multipart
+ class << self
+ def parse_multipart_with_rewind(env)
+ result = parse_multipart_without_rewind(env)
+
+ begin
+ env['rack.input'].rewind if env['rack.input'].respond_to?(:rewind)
+ rescue Errno::ESPIPE
+ # Handles exceptions raised by input streams that cannot be rewound
+ # such as when using plain CGI under Apache
+ end
+
+ result
+ end
+
+ alias_method_chain :parse_multipart, :rewind
+ end
+ end
+ end
+end
View
10 actionpack/lib/action_controller/rewindable_input.rb
@@ -15,15 +15,19 @@ def rewind
@io.rewind
end
+ def string
+ @string
+ end
+
def method_missing(method, *args, &block)
@io.send(method, *args, &block)
end
private
def read_original_io
- unless @str
- @str = @io.read
- @io = StringIO.new(@str)
+ unless @string
+ @string = @io.read
+ @io = StringIO.new(@string)
end
end
end
View
24 actionpack/lib/action_controller/verb_piggybacking.rb
@@ -1,24 +0,0 @@
-module ActionController
- # TODO: Use Rack::MethodOverride when it is released
- class VerbPiggybacking
- HTTP_METHODS = %w(GET HEAD PUT POST DELETE OPTIONS)
-
- def initialize(app)
- @app = app
- end
-
- def call(env)
- if env["REQUEST_METHOD"] == "POST"
- req = Request.new(env)
- if method = (req.parameters[:_method] || env["HTTP_X_HTTP_METHOD_OVERRIDE"])
- method = method.to_s.upcase
- if HTTP_METHODS.include?(method)
- env["REQUEST_METHOD"] = method
- end
- end
- end
-
- @app.call(env)
- end
- end
-end
View
2 actionpack/test/controller/request/multipart_params_parsing_test.rb
@@ -200,7 +200,7 @@ def call(env)
def with_muck_middleware
original_middleware = ActionController::Dispatcher.middleware
middleware = original_middleware.dup
- middleware.use MuckMiddleware
+ middleware.insert_after ActionController::RewindableInput, MuckMiddleware
ActionController::Dispatcher.middleware = middleware
yield
ActionController::Dispatcher.middleware = original_middleware
View
2 actionpack/test/controller/request/url_encoded_params_parsing_test.rb
@@ -183,7 +183,7 @@ def call(env)
def with_muck_middleware
original_middleware = ActionController::Dispatcher.middleware
middleware = original_middleware.dup
- middleware.use MuckMiddleware
+ middleware.insert_after ActionController::RewindableInput, MuckMiddleware
ActionController::Dispatcher.middleware = middleware
yield
ActionController::Dispatcher.middleware = original_middleware
View
12 activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
@@ -89,7 +89,7 @@ def outside_transaction?
# - The block will be run without doing anything. All database statements
# that happen within the block are effectively appended to the already
# open database transaction.
- # - However, if +requires_new+ is set, the block will be wrapped in a
+ # - However, if +:requires_new+ is set, the block will be wrapped in a
# database savepoint acting as a sub-transaction.
#
# === Caveats
@@ -113,8 +113,12 @@ def outside_transaction?
def transaction(options = {})
options.assert_valid_keys :requires_new, :joinable
- last_transaction_joinable, @transaction_joinable =
- @transaction_joinable, options[:joinable] || true
+ last_transaction_joinable = @transaction_joinable
+ if options.has_key?(:joinable)
+ @transaction_joinable = options[:joinable]
+ else
+ @transaction_joinable = true
+ end
requires_new = options[:requires_new] || !last_transaction_joinable
transaction_open = false
@@ -141,7 +145,7 @@ def transaction(options = {})
rollback_to_savepoint
end
end
- raise unless database_transaction_rollback.is_a? ActiveRecord::Rollback
+ raise unless database_transaction_rollback.is_a?(ActiveRecord::Rollback)
end
ensure
@transaction_joinable = last_transaction_joinable
View
10 activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -533,13 +533,11 @@ def rollback_db_transaction
execute "ROLLBACK"
end
- if PGconn.public_method_defined?(:transaction_status)
- # ruby-pg defines Ruby constants for transaction status,
- # ruby-postgres does not.
- PQTRANS_IDLE = defined?(PGconn::PQTRANS_IDLE) ? PGconn::PQTRANS_IDLE : 0
-
+ if defined?(PGconn::PQTRANS_IDLE)
+ # The ruby-pg driver supports inspecting the transaction status,
+ # while the ruby-postgres driver does not.
def outside_transaction?
- @connection.transaction_status == PQTRANS_IDLE
+ @connection.transaction_status == PGconn::PQTRANS_IDLE
end
end
View
3 activerecord/test/cases/transactions_test.rb
@@ -321,9 +321,8 @@ def test_rollback_when_commit_raises
end
end
- if current_adapter?(:PostgreSQLAdapter) && PGconn.public_method_defined?(:transaction_status)
+ if current_adapter?(:PostgreSQLAdapter) && defined?(PGconn::PQTRANS_IDLE)
def test_outside_transaction_works
- Topic.logger.info("-------------")
assert Topic.connection.outside_transaction?
Topic.connection.begin_db_transaction
assert !Topic.connection.outside_transaction?
View
2 railties/lib/initializer.rb
@@ -537,7 +537,7 @@ def initialize_i18n
end
def initialize_metal
- configuration.middleware.insert_before(:"ActionController::VerbPiggybacking", Rails::Rack::Metal)
+ configuration.middleware.insert_before(:"ActionController::RewindableInput", Rails::Rack::Metal)
end
# Initializes framework-specific settings for each of the loaded frameworks

0 comments on commit b8fadd7

Please sign in to comment.
Something went wrong with that request. Please try again.