Skip to content

Commit

Permalink
fix(ruby-grape#2236): Stripping the internals of Grape::Endpoint wh…
Browse files Browse the repository at this point in the history
…en `NoMethodError` is raised
  • Loading branch information
jcagarcia committed Nov 9, 2023
1 parent 32b8d22 commit 9aea1c7
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

* [#2364](https://github.com/ruby-grape/grape/pull/2364): Add missing requires - [@ericproulx](https://github.com/ericproulx).
* [#2366](https://github.com/ruby-grape/grape/pull/2366): Default quality to 1.0 in the `Accept` header when omitted - [@hiddewie](https://github.com/hiddewie).
* [#](): Stripping the internals of `Grape::Endpoint` when `NoMethodError` is raised - [@jcagarcia](https://github.com/jcagarcia).
* Your contribution here.

### 1.8.0 (2023/08/30)
Expand Down
4 changes: 4 additions & 0 deletions lib/grape/endpoint.rb
Original file line number Diff line number Diff line change
Expand Up @@ -403,5 +403,9 @@ def options?
options[:options_route_enabled] &&
env[Grape::Http::Headers::REQUEST_METHOD] == Grape::Http::Headers::OPTIONS
end

def method_missing(name, *args)
raise NoMethodError.new("undefined method `#{name}` for #{self.class}")
end
end
end
11 changes: 11 additions & 0 deletions spec/grape/endpoint_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -692,6 +692,17 @@ def app
end
end

describe '#method_missing' do
it 'raises NoMethodError but stripping the internals of the Grape::Endpoint class' do
subject.get('/hey') do
undefined_helper
end
expect {
get '/hey'
}.to raise_error(NoMethodError, /^undefined method `undefined_helper` for #<Class:0x[0-9a-fA-F]+>$/)
end
end

it 'does not persist params between calls' do
subject.post('/new') do
params[:text]
Expand Down

0 comments on commit 9aea1c7

Please sign in to comment.