aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Henzen <stefan.henzen@gmail.com>2014-10-09 15:45:49 +0200
committerStefan Henzen <stefan.henzen@gmail.com>2014-10-09 15:45:49 +0200
commite86cadc257caf6dcd762810f022e5d4009c6ca25 (patch)
tree199e9ba62481118e17a3f139155eaa4f470a6c22
parent344ec1b6a7ed102ce6a92c31e3b64364f4bdb772 (diff)
downloadrails-e86cadc257caf6dcd762810f022e5d4009c6ca25.tar.gz
rails-e86cadc257caf6dcd762810f022e5d4009c6ca25.tar.bz2
rails-e86cadc257caf6dcd762810f022e5d4009c6ca25.zip
Request#check_method no longer breaks when :en is not available locale
Request#check_method would use to_sentence(locale: :en), which breaks when I18n.available_locales does not include :en and I18n.enforce_available_locales is true (default). Inlined to_sentence functionality to solve this.
-rw-r--r--actionpack/lib/action_dispatch/http/request.rb2
-rw-r--r--actionpack/test/dispatch/request_test.rb16
2 files changed, 17 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/http/request.rb b/actionpack/lib/action_dispatch/http/request.rb
index e854dd266c..a8785ee6bf 100644
--- a/actionpack/lib/action_dispatch/http/request.rb
+++ b/actionpack/lib/action_dispatch/http/request.rb
@@ -341,7 +341,7 @@ module ActionDispatch
private
def check_method(name)
- HTTP_METHOD_LOOKUP[name] || raise(ActionController::UnknownHttpMethod, "#{name}, accepted HTTP methods are #{HTTP_METHODS.to_sentence(:locale => :en)}")
+ HTTP_METHOD_LOOKUP[name] || raise(ActionController::UnknownHttpMethod, "#{name}, accepted HTTP methods are #{HTTP_METHODS[0...-1].join(', ')}, and #{HTTP_METHODS[-1]}")
name
end
end
diff --git a/actionpack/test/dispatch/request_test.rb b/actionpack/test/dispatch/request_test.rb
index a58306ea0a..940ebc0224 100644
--- a/actionpack/test/dispatch/request_test.rb
+++ b/actionpack/test/dispatch/request_test.rb
@@ -683,6 +683,22 @@ class RequestMethod < BaseRequestTest
end
end
+ test "exception on invalid HTTP method unaffected by I18n settings" do
+ old_locales = I18n.available_locales
+ old_enforce = I18n.config.enforce_available_locales
+
+ begin
+ I18n.available_locales = [:nl]
+ I18n.config.enforce_available_locales = true
+ assert_raise(ActionController::UnknownHttpMethod) do
+ stub_request('REQUEST_METHOD' => '_RANDOM_METHOD').method
+ end
+ ensure
+ I18n.available_locales = old_locales
+ I18n.config.enforce_available_locales = old_enforce
+ end
+ end
+
test "post masquerading as patch" do
request = stub_request(
'REQUEST_METHOD' => 'PATCH',