aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorGenadi Samokovarov <gsamokovarov@gmail.com>2015-03-01 13:28:25 +0200
committerGenadi Samokovarov <gsamokovarov@gmail.com>2015-03-01 16:31:20 +0200
commit707a433870e9e06af688f85a4aedc64a90791a64 (patch)
treeca3170c3cc4a61ae971a5fd920055d395d7c3c21 /actionpack/lib/action_dispatch
parent293bd95c3e77275193130bc14c986348aae8b0e2 (diff)
downloadrails-707a433870e9e06af688f85a4aedc64a90791a64.tar.gz
rails-707a433870e9e06af688f85a4aedc64a90791a64.tar.bz2
rails-707a433870e9e06af688f85a4aedc64a90791a64.zip
Work around for upstream Ruby bug #10685
In f6e293ec54f02f83cdb37502bea117f66f87bcae we avoided a segfault in the tests, however I think we should try to avoid the crash, as it may happen in user code as well. Here is what I distiled the bug down to: ```ruby # Rails case - works on 2.0, 2.1; crashes on 2.2 require 'action_dispatch' ActionDispatch::Response.new(200, "Content-Type" => "text/xml") # General case - works on 2.0, 2.1; crashes on 2.2 def foo(optional = {}, default_argument: nil) end foo('quux' => 'bar') ```
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/http/response.rb4
-rw-r--r--actionpack/lib/action_dispatch/testing/test_response.rb2
2 files changed, 4 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/http/response.rb b/actionpack/lib/action_dispatch/http/response.rb
index a895d1ab18..5fe544c60c 100644
--- a/actionpack/lib/action_dispatch/http/response.rb
+++ b/actionpack/lib/action_dispatch/http/response.rb
@@ -113,7 +113,9 @@ module ActionDispatch # :nodoc:
# The underlying body, as a streamable object.
attr_reader :stream
- def initialize(status = 200, header = {}, body = [], default_headers: self.class.default_headers)
+ # Ruby 2.2 bug https://bugs.ruby-lang.org/issues/10685 prevents
+ # default_headers from being a keyword argument.
+ def initialize(status = 200, header = {}, body = [], default_headers = self.class.default_headers)
super()
header = merge_default_headers(header, default_headers)
diff --git a/actionpack/lib/action_dispatch/testing/test_response.rb b/actionpack/lib/action_dispatch/testing/test_response.rb
index a9b88ac5fd..527784885c 100644
--- a/actionpack/lib/action_dispatch/testing/test_response.rb
+++ b/actionpack/lib/action_dispatch/testing/test_response.rb
@@ -7,7 +7,7 @@ module ActionDispatch
# See Response for more information on controller response objects.
class TestResponse < Response
def self.from_response(response)
- new response.status, response.headers, response.body, default_headers: nil
+ new response.status, response.headers, response.body, nil
end
# Was the response successful?