diff options
author | Genadi Samokovarov <gsamokovarov@gmail.com> | 2015-03-01 13:28:25 +0200 |
---|---|---|
committer | Genadi Samokovarov <gsamokovarov@gmail.com> | 2015-03-01 16:31:20 +0200 |
commit | 707a433870e9e06af688f85a4aedc64a90791a64 (patch) | |
tree | ca3170c3cc4a61ae971a5fd920055d395d7c3c21 /actionpack/lib | |
parent | 293bd95c3e77275193130bc14c986348aae8b0e2 (diff) | |
download | rails-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')
-rw-r--r-- | actionpack/lib/action_dispatch/http/response.rb | 4 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/testing/test_response.rb | 2 |
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? |