@@ -14,12 +14,22 @@ def process_action(event)
14
14
15
15
# Unused, but needed for Devise 401 status code monkey patch to still work.
16
16
::ActionController ::Base . log_process_action ( payload )
17
+
18
+ params = payload [ :params ]
17
19
18
- # According to PR https://github.com/reidmorrison/rails_semantic_logger/pull/37/files
19
- # payload[:params] is not always a Hash.
20
- payload [ :params ] = payload [ :params ] . to_unsafe_h unless payload [ :params ] . is_a? ( Hash )
21
- payload [ :params ] = payload [ :params ] . except ( *INTERNAL_PARAMS )
22
- payload . delete ( :params ) if payload [ :params ] . empty?
20
+ if params . kind_of? ( Hash ) || params . kind_of? ( ::ActionController ::Parameters )
21
+ # According to PR https://github.com/reidmorrison/rails_semantic_logger/pull/37/files
22
+ # params is not always a Hash.
23
+ payload [ :params ] = params . to_unsafe_h unless params . is_a? ( Hash )
24
+ payload [ :params ] = params . except ( *INTERNAL_PARAMS )
25
+
26
+ if payload [ :params ] . empty?
27
+ payload . delete ( :params )
28
+ elsif params [ "file" ]
29
+ # When logging to JSON the entire tempfile is logged, so convert it to a string.
30
+ payload [ :params ] [ "file" ] = params [ "file" ] . inspect
31
+ end
32
+ end
23
33
24
34
format = payload [ :format ]
25
35
payload [ :format ] = format . to_s . upcase if format . is_a? ( Symbol )
@@ -48,12 +58,6 @@ def process_action(event)
48
58
payload . delete ( :request )
49
59
payload . delete ( :response )
50
60
51
- params = payload [ :params ]
52
- if params
53
- # When logging to JSON the entire tempfile is logged, so convert it to a string.
54
- params [ "file" ] = params [ "file" ] . inspect if params [ "file" ]
55
- end
56
-
57
61
{
58
62
message : "Completed ##{ payload [ :action ] } " ,
59
63
duration : event . duration ,
0 commit comments