grape-middleware-logger 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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