7
7
module AppMap
8
8
module Handler
9
9
module Rails
10
+
11
+ TEMPLATE_RENDER_VALUE = 'appmap.handler.rails.template.return_value'
12
+
10
13
module RequestHandler
11
14
class HTTPServerRequest < AppMap ::Event ::MethodEvent
12
15
attr_accessor :normalized_path_info , :request_method , :path_info , :params , :headers
@@ -46,8 +49,7 @@ def to_h
46
49
value : self . class . display_string ( val ) ,
47
50
object_id : val . __id__ ,
48
51
} . tap do |message |
49
- properties = object_properties ( val )
50
- message [ :properties ] = properties if properties
52
+ AppMap ::Event ::MethodEvent . add_schema message , val , always : true
51
53
end
52
54
end
53
55
end
@@ -67,16 +69,16 @@ def normalized_path(request, router = ::Rails.application.routes.router)
67
69
end
68
70
end
69
71
70
- class HTTPServerResponse < AppMap ::Event ::MethodReturnIgnoreValue
72
+ class HTTPServerResponse < AppMap ::Event ::MethodReturn
71
73
attr_accessor :status , :headers
72
74
73
- def initialize ( response , parent_id , elapsed )
74
- super AppMap :: Event . next_id_counter , :return , Thread . current . object_id
75
-
76
- self . status = response . status
77
- self . parent_id = parent_id
78
- self . elapsed = elapsed
79
- self . headers = response . headers . dup
75
+ class << self
76
+ def build_from_invocation ( parent_id , return_value , elapsed , response , event : HTTPServerResponse . new )
77
+ event ||= HTTPServerResponse . new
78
+ event . status = response . status
79
+ event . headers = response . headers . dup
80
+ AppMap :: Event :: MethodReturn . build_from_invocation parent_id , return_value , nil , elapsed : elapsed , event : event
81
+ end
80
82
end
81
83
82
84
def to_h
@@ -108,7 +110,9 @@ def before_hook(receiver, *)
108
110
end
109
111
110
112
def after_hook ( receiver , call_event , elapsed , *)
111
- return_event = HTTPServerResponse . new receiver . response , call_event . id , elapsed
113
+ return_value = Thread . current [ TEMPLATE_RENDER_VALUE ]
114
+ Thread . current [ TEMPLATE_RENDER_VALUE ] = nil
115
+ return_event = HTTPServerResponse . build_from_invocation call_event . id , return_value , elapsed , receiver . response
112
116
AppMap . tracing . record_event return_event
113
117
end
114
118
end
0 commit comments