28: def self.logging( controller, request, response )
29:
30: begin
31:
32: unless self.current.nil?
33: raise RuntimeError, "Can't nest RequestLogEntry.logging"
34: end
35:
36: self.current = self.new
37: yield
38:
39: ensure
40:
41: entry = self.current
42: self.current = nil
43:
44: unless User.current.nil?
45: entry.acting_user_id = User.current.id
46: entry.acting_user_name = User.current.name
47: end
48:
49: unless User.of_record.nil?
50: entry.user_of_record_id = User.of_record.id
51: entry.user_of_record_name = User.of_record.name
52: end
53:
54: entry.controller = controller.class.name
55: entry.action = controller.action_name
56:
57: entry.remote_ip = request.remote_ip || 'UNKNOWN'
58: entry.http_method = request.method.to_s
59: entry.status = response.headers["Status"] || 'UNKNOWN'
60:
61: if controller.respond_to?( :resource ) && !controller.resource.nil?
62:
63: model_object = controller.resource
64:
65: entry.model_class = model_object.class.name
66: entry.model_id = model_object.id
67:
68: end
69:
70: entry.save!
71: entry.save_logged_pchecks!
72:
73: end
74:
75: end