From a87ab4a98fc0212f8b1e1819daea9264d04f1372 Mon Sep 17 00:00:00 2001 From: zvkemp Date: Fri, 4 May 2018 09:48:16 -0700 Subject: [PATCH 1/2] Instrument serialization and rendering as 'format_response.grape' --- CHANGELOG.md | 2 +- README.md | 8 ++++++++ lib/grape/middleware/formatter.rb | 4 +++- spec/grape/endpoint_spec.rb | 8 ++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5421714f39..3addc94756 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ #### Features -* Your contribution here. +* [#1759](https://github.com/ruby-grape/grape/pull/1759): Instrument serialization as `'format_response.grape'` - [@zvkemp](https://github.com/zvkemp). #### Fixes diff --git a/README.md b/README.md index 0bf037fecb..6cd887349d 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,7 @@ - [endpoint_render.grape](#endpoint_rendergrape) - [endpoint_run_filters.grape](#endpoint_run_filtersgrape) - [endpoint_run_validators.grape](#endpoint_run_validatorsgrape) + - [format_response.grape](#format_responsegrape) - [Monitoring Products](#monitoring-products) - [Contributing to Grape](#contributing-to-grape) - [License](#license) @@ -3484,6 +3485,13 @@ The execution of validators. * *validators* - The validators being executed * *request* - The request being validated +#### format_response.grape + +Serialization or template rendering. + +* *env* - The request environment +* *formatter* - The formatter object (e.g., `Grape::Formatter::Json`) + See the [ActiveSupport::Notifications documentation](http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html) for information on how to subscribe to these events. ### Monitoring Products diff --git a/lib/grape/middleware/formatter.rb b/lib/grape/middleware/formatter.rb index 5f8caa50f1..a3ab82b4cb 100644 --- a/lib/grape/middleware/formatter.rb +++ b/lib/grape/middleware/formatter.rb @@ -41,7 +41,9 @@ def build_formatted_response(status, headers, bodies) else # Allow content-type to be explicitly overwritten formatter = fetch_formatter(headers, options) - bodymap = bodies.collect { |body| formatter.call(body, env) } + bodymap = ActiveSupport::Notifications.instrument('format_response.grape', formatter: formatter, env: env) do + bodies.collect { |body| formatter.call(body, env) } + end Rack::Response.new(bodymap, status, headers) end rescue Grape::Exceptions::InvalidFormatter => e diff --git a/spec/grape/endpoint_spec.rb b/spec/grape/endpoint_spec.rb index 625cc9b45e..a736efe045 100644 --- a/spec/grape/endpoint_spec.rb +++ b/spec/grape/endpoint_spec.rb @@ -1493,7 +1493,9 @@ def memoized filters: [], type: :after }), have_attributes(name: 'endpoint_run.grape', payload: { endpoint: a_kind_of(Grape::Endpoint), - env: an_instance_of(Hash) }) + env: an_instance_of(Hash) }), + have_attributes(name: 'format_response.grape', payload: { env: an_instance_of(Hash), + formatter: a_kind_of(Module) }) ) # In order that events were initialized @@ -1515,7 +1517,9 @@ def memoized have_attributes(name: 'endpoint_render.grape', payload: { endpoint: a_kind_of(Grape::Endpoint) }), have_attributes(name: 'endpoint_run_filters.grape', payload: { endpoint: a_kind_of(Grape::Endpoint), filters: [], - type: :after }) + type: :after }), + have_attributes(name: 'format_response.grape', payload: { env: an_instance_of(Hash), + formatter: a_kind_of(Module) }) ) end end From 7f9e329c587e32c7e964cc850c201c84b427432f Mon Sep 17 00:00:00 2001 From: zvkemp Date: Fri, 4 May 2018 14:48:06 -0700 Subject: [PATCH 2/2] update rails_edge appraisal --- .travis.yml | 2 -- Appraisals | 2 +- CHANGELOG.md | 1 + gemfiles/rails_edge.gemfile | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 01fb5f163f..e6a01b4396 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,8 +33,6 @@ matrix: gemfile: gemfiles/rack_edge.gemfile - rvm: 2.3.5 gemfile: gemfiles/rack_1.5.2.gemfile - - rvm: 2.3.5 - gemfile: gemfiles/rails_edge.gemfile - rvm: 2.3.5 gemfile: gemfiles/rails_5.gemfile - rvm: 2.2.8 diff --git a/Appraisals b/Appraisals index 5bb876782b..8c7cd680c5 100644 --- a/Appraisals +++ b/Appraisals @@ -16,7 +16,7 @@ appraise 'rack-1.5.2' do end appraise 'rails-edge' do - gem 'arel', github: 'rails/arel' + gem 'rails', github: 'rails/rails' end appraise 'rack-edge' do diff --git a/CHANGELOG.md b/CHANGELOG.md index 3addc94756..b11cb2a1af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ #### Fixes +* [#1759](https://github.com/ruby-grape/grape/pull/1759): Update appraisal for rails_edge - [@zvkemp](https://github.com/zvkemp). * Your contribution here. ### 1.0.3 (4/23/2018) diff --git a/gemfiles/rails_edge.gemfile b/gemfiles/rails_edge.gemfile index ab845cba20..0e4c76fc2c 100644 --- a/gemfiles/rails_edge.gemfile +++ b/gemfiles/rails_edge.gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' -gem 'arel', github: 'rails/arel' +gem 'rails', github: 'rails/rails' group :development, :test do gem 'bundler'