grape-middleware-logger 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4547077b8d2d510b968f5929a6a5a363dd923c96
4
- data.tar.gz: d0ef665c52d56e8381b258e3dea232c20e53bd6c
3
+ metadata.gz: bdd1d91790c08e781a650d7a86940ff36b134b34
4
+ data.tar.gz: 5ba7043cfc03c3f7f895069ae3d1c63d3a89e6ef
5
5
  SHA512:
6
- metadata.gz: 3fe36c90107dfd40ed7b52c145a68646c0ccfbc5b5833cdc16c6318f13016def891f4935f7b4e4bde2ef93fad89fb469c4f89e1e79a1e901ddec3cc817e3bf74
7
- data.tar.gz: 9e158043f094a7c41eb3e7721d25c6487f0f1538587b5508150d9a920d85dc7743c30481348977ff51b99f4db206d66662c2f93e77efd21cc43b3cc5729e4f54
6
+ metadata.gz: ee6e3ed6f1f736358989522e1fe4f0ef66e60d2d35a30c5ae54eb073738db8ef1868b07ef76f6b583a9c36268946f4fc576d11709c81dc46d05aee5dde78a0f4
7
+ data.tar.gz: b365b76db8fcdbbf47f1cf871501bfc7f160d24747bc581bdae2651c13cc6befce54a9d55733cf129bbca32a9f0ab2628a754bfa9afed12b04e913a36c9303d1
data/README.md CHANGED
@@ -17,14 +17,22 @@ gem 'grape-middleware-logger'
17
17
  class API < Grape::API
18
18
  use Grape::Middleware::Logger
19
19
  end
20
- ```
21
- Using Grape with Rails or want to customize the logging? You can provide a `logger` option, which just has to respond to `.info(msg)`. Example Rails logging and parameter sanitization:
20
+ ```
21
+
22
+ #### Rails
23
+ Using Grape with Rails? `Rails.logger` will be used by default.
24
+
25
+ #### Custom setup
26
+ Want to customize the logging? You can provide a `logger` option.
27
+
28
+ Example using a CustomLogger and parameter sanitization:
22
29
  ```ruby
23
- use Grape::Middleware::Logger, {
24
- logger: Rails.logger,
30
+ use Grape::Middleware::Logger, {
31
+ logger: CustomLogger.new,
25
32
  filter: ActionDispatch::Http::ParameterFilter.new(Rails.application.config.filter_parameters)
26
33
  }
27
34
  ```
35
+ The `logger` option can be any object that responds to `.info(msg)`
28
36
 
29
37
  The `filter` option can be any object that responds to `.filter(params_hash)`
30
38
 
@@ -1,7 +1,7 @@
1
1
  module Grape
2
2
  module Middleware
3
3
  class Logger
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
6
6
  end
7
7
  end
@@ -3,79 +3,75 @@ require 'grape'
3
3
 
4
4
  # avoid superclass mismatch when version file gets loaded first
5
5
  Grape::Middleware.send :remove_const, :Logger if defined? Grape::Middleware::Logger
6
- module Grape
7
- module Middleware
8
- class Logger < Grape::Middleware::Globals
9
-
10
- def before
11
- start_time
12
- super # sets env['grape.*']
13
- logger.info ''
14
- logger.info %Q(Started #{env['grape.request'].request_method} "#{env['grape.request'].path}")
15
- logger.info %Q( Parameters: #{parameters})
16
- end
6
+ class Grape::Middleware::Logger < Grape::Middleware::Globals
7
+ def before
8
+ start_time
9
+ super # sets env['grape.*']
10
+ logger.info ''
11
+ logger.info %Q(Started #{env['grape.request'].request_method} "#{env['grape.request'].path}")
12
+ logger.info %Q( Parameters: #{parameters})
13
+ end
17
14
 
18
- # @note Error and exception handling are required for the +after+ hooks
19
- # Exceptions are logged as a 500 status and re-raised
20
- # Other "errors" are caught, logged and re-thrown
21
- def call!(env)
22
- @env = env
23
- before
24
- error = catch(:error) do
25
- begin
26
- @app_response = @app.call(@env)
27
- rescue => e
28
- after_exception(e)
29
- raise e
30
- end
31
- nil
32
- end
33
- if error
34
- after_failure(error)
35
- throw(:error, error)
36
- else
37
- after(@app_response.status)
38
- end
39
- @app_response
15
+ # @note Error and exception handling are required for the +after+ hooks
16
+ # Exceptions are logged as a 500 status and re-raised
17
+ # Other "errors" are caught, logged and re-thrown
18
+ def call!(env)
19
+ @env = env
20
+ before
21
+ error = catch(:error) do
22
+ begin
23
+ @app_response = @app.call(@env)
24
+ rescue => e
25
+ after_exception(e)
26
+ raise e
40
27
  end
28
+ nil
29
+ end
30
+ if error
31
+ after_failure(error)
32
+ throw(:error, error)
33
+ else
34
+ after(@app_response.status)
35
+ end
36
+ @app_response
37
+ end
41
38
 
42
- def after(status)
43
- logger.info "Completed #{status} in #{((Time.now - start_time) * 1000).round(2)}ms"
44
- logger.info ''
45
- end
39
+ def after(status)
40
+ logger.info "Completed #{status} in #{((Time.now - start_time) * 1000).round(2)}ms"
41
+ logger.info ''
42
+ end
46
43
 
47
- #
48
- # Helpers
49
- #
44
+ #
45
+ # Helpers
46
+ #
50
47
 
51
- def after_exception(e)
52
- logger.info %Q( Error: #{e.message})
53
- after(500)
54
- end
48
+ def after_exception(e)
49
+ logger.info %Q( Error: #{e.message})
50
+ after(500)
51
+ end
55
52
 
56
- def after_failure(error)
57
- logger.info %Q( Error: #{error[:message]}) if error[:message]
58
- after(error[:status])
59
- end
53
+ def after_failure(error)
54
+ logger.info %Q( Error: #{error[:message]}) if error[:message]
55
+ after(error[:status])
56
+ end
60
57
 
61
- def parameters
62
- request_params = env['grape.request.params'].to_hash
63
- request_params.merge!(env['action_dispatch.request.request_parameters'] || {}) # for Rails
64
- if @options[:filter]
65
- @options[:filter].filter(request_params)
66
- else
67
- request_params
68
- end
69
- end
58
+ def parameters
59
+ request_params = env['grape.request.params'].to_hash
60
+ request_params.merge!(env['action_dispatch.request.request_parameters'] || {}) # for Rails
61
+ if @options[:filter]
62
+ @options[:filter].filter(request_params)
63
+ else
64
+ request_params
65
+ end
66
+ end
70
67
 
71
- def start_time
72
- @start_time ||= Time.now
73
- end
68
+ def start_time
69
+ @start_time ||= Time.now
70
+ end
74
71
 
75
- def logger
76
- @logger ||= @options[:logger] || ::Logger.new(STDOUT)
77
- end
78
- end
72
+ def logger
73
+ @logger ||= @options[:logger]
74
+ @logger ||= defined?(Rails) && Rails.logger.present? ? Rails.logger : Logger.new(STDOUT)
79
75
  end
80
76
  end
81
77
 
@@ -97,8 +97,24 @@ describe Grape::Middleware::Logger do
97
97
  context 'when @options[:logger] is nil' do
98
98
  let(:options) { {} }
99
99
 
100
- it 'defaults to the the standard Logger' do
101
- expect(subject.logger).to be_a(Logger)
100
+ context 'when Rails is defined' do
101
+ module Rails
102
+ class << self
103
+ attr_accessor :logger
104
+ end
105
+ end
106
+
107
+ it 'defaults to the the standard Logger' do
108
+ expect(subject.logger).to be_a(Logger)
109
+ end
110
+
111
+ context 'when Rails.logger is defined' do
112
+ before { Rails.logger = double('rails_logger') }
113
+
114
+ it 'sets @logger to Rails.logger' do
115
+ expect(subject.logger).to be Rails.logger
116
+ end
117
+ end
102
118
  end
103
119
  end
104
120
 
@@ -125,8 +141,7 @@ describe Grape::Middleware::Logger do
125
141
  #
126
142
  # Test class
127
143
  #
128
-
129
- ParamFilter = Class.new do
144
+ class ParamFilter
130
145
  def filter(opts)
131
146
  opts.each_pair { |key, val| val[0..-1] = '[FILTERED]' if key == 'password' }
132
147
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-middleware-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Buckley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-11 00:00:00.000000000 Z
11
+ date: 2015-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grape