From c701d4887defe6ac5ad1736428a850e0e029bfa9 Mon Sep 17 00:00:00 2001 From: darren987469 Date: Thu, 6 Sep 2018 21:16:01 +0800 Subject: [PATCH] Fix route requirements bug This was a bug introduced by commit 9f4ba67. The commit replaces `options[:route_options].clone.merge(...)` with `options[:route_options].clone.reverse_merge(...)`. That causes disappear of the requirements in namespace. --- CHANGELOG.md | 1 + lib/grape/endpoint.rb | 2 +- spec/grape/api/routes_with_requirements_spec.rb | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4910c574f4..f776bf8786 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ * Your contribution here. * [#1776](https://github.com/ruby-grape/grape/pull/1776): Validate response returned by the exception handler - [@darren987469](https://github.com/darren987469). * [#1787](https://github.com/ruby-grape/grape/pull/1787): Add documented but not implemented ability to `.insert` a middleware in the stack - [@michaellennox](https://github.com/michaellennox). +* [#1788](https://github.com/ruby-grape/grape/pull/1788): Fix route requirements bug - [@darren987469](https://github.com/darren987469), [@darrellnash](https://github.com/darrellnash). ### 1.1.0 (8/4/2018) diff --git a/lib/grape/endpoint.rb b/lib/grape/endpoint.rb index aacf0472aa..5100f96541 100644 --- a/lib/grape/endpoint.rb +++ b/lib/grape/endpoint.rb @@ -200,7 +200,7 @@ def prepare_version end def merge_route_options(**default) - options[:route_options].clone.reverse_merge(**default) + options[:route_options].clone.merge(**default) end def map_routes diff --git a/spec/grape/api/routes_with_requirements_spec.rb b/spec/grape/api/routes_with_requirements_spec.rb index e66963c38d..c6ce2ccee0 100644 --- a/spec/grape/api/routes_with_requirements_spec.rb +++ b/spec/grape/api/routes_with_requirements_spec.rb @@ -22,7 +22,7 @@ def app it 'routes to a path with multiple params with dots' do subject.get ':id_with_dots/:another_id_with_dots', requirements: { id_with_dots: %r{[^\/]+}, - another_id_with_dots: %r{[^\/]+} } do + another_id_with_dots: %r{[^\/]+} } do "#{params[:id_with_dots]}/#{params[:another_id_with_dots]}" end