maiha-request_id 0.1 → 0.1.1
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.
- data/README +27 -4
- data/lib/request_id.rb +38 -11
- metadata +2 -2
data/README
CHANGED
|
@@ -7,17 +7,40 @@ Rails plugin that adds a new method (Controller#request_id) to distinguish reque
|
|
|
7
7
|
Methods
|
|
8
8
|
=======
|
|
9
9
|
|
|
10
|
-
ActionController::Base#request_id
|
|
10
|
+
* ActionController::Base#request_id
|
|
11
|
+
|
|
12
|
+
=> "3000:1" # request_id_with_port is true
|
|
13
|
+
=> "1" # request_id_with_port is false
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Configurations
|
|
17
|
+
==============
|
|
18
|
+
|
|
19
|
+
* ActionController::Base.request_id_with_port
|
|
20
|
+
|
|
21
|
+
Indicates whether request_id needs port number or not.
|
|
22
|
+
It is useful under clustered servers. This is true, by default.
|
|
11
23
|
|
|
12
24
|
|
|
13
25
|
Log
|
|
14
26
|
===
|
|
15
27
|
|
|
28
|
+
* Request ID field is automatically added into log file
|
|
29
|
+
|
|
16
30
|
Processing UserController#index (for 127.0.0.1 at 2008-11-16 21:30:00) [GET]
|
|
17
|
-
Request ID: 1
|
|
18
|
-
|
|
19
|
-
|
|
31
|
+
Request ID: 3000:1
|
|
32
|
+
|
|
33
|
+
Processing UserController#index (for 127.0.0.1 at 2008-11-16 21:30:05) [GET]
|
|
34
|
+
Request ID: 3000:2
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
Note
|
|
38
|
+
====
|
|
39
|
+
|
|
40
|
+
* request_id is reset when the server restarts
|
|
20
41
|
|
|
42
|
+
* backend_port is used as port number only on Mongrel server, otherwise frontend_port is used.
|
|
43
|
+
Anyone know how to detect backend port number on Lighttpd, WEBrick and Thin?
|
|
21
44
|
|
|
22
45
|
|
|
23
46
|
Copyright (c) 2008 maiha@wota.jp, released under the MIT license
|
data/lib/request_id.rb
CHANGED
|
@@ -1,17 +1,48 @@
|
|
|
1
1
|
module RequestId
|
|
2
2
|
def self.included(base)
|
|
3
|
-
instance_methods =
|
|
3
|
+
instance_methods = rails2x? ? Rails2x : Rails1x
|
|
4
4
|
base.class_eval do
|
|
5
5
|
cattr_accessor :max_request_id
|
|
6
|
+
cattr_accessor :request_id_with_port
|
|
7
|
+
self.request_id_with_port = true
|
|
6
8
|
include instance_methods
|
|
7
9
|
end
|
|
8
10
|
end
|
|
9
11
|
|
|
10
|
-
def self.
|
|
11
|
-
|
|
12
|
+
def self.rails2x?
|
|
13
|
+
ActionController::Base.private_instance_methods.include?("log_processing_for_request_id")
|
|
12
14
|
end
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
def request_id
|
|
17
|
+
@request_id ||= new_request_id
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
def new_request_id
|
|
22
|
+
id = self.class.max_request_id = self.class.max_request_id.to_i + 1
|
|
23
|
+
if self.class.request_id_with_port
|
|
24
|
+
port = backend_port || request.port
|
|
25
|
+
"#{port}:#{id}"
|
|
26
|
+
else
|
|
27
|
+
id.to_s
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def backend_port
|
|
32
|
+
case request.cgi.class.name
|
|
33
|
+
when "Mongrel::CGIWrapper"
|
|
34
|
+
request.cgi.handler.listener.port rescue "unknown_mongrel"
|
|
35
|
+
when "Rack::Adapter::Rails::CGIWrapper"
|
|
36
|
+
# not implemented yet
|
|
37
|
+
nil
|
|
38
|
+
else
|
|
39
|
+
nil
|
|
40
|
+
end
|
|
41
|
+
rescue => error
|
|
42
|
+
logger.error "[request_id] backend_port error: #{error}" if logger
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
module Rails1x
|
|
15
46
|
def self.included(base)
|
|
16
47
|
base.class_eval do
|
|
17
48
|
alias_method_chain :log_processing, :request_id
|
|
@@ -19,21 +50,17 @@ module RequestId
|
|
|
19
50
|
end
|
|
20
51
|
|
|
21
52
|
private
|
|
22
|
-
def request_id
|
|
23
|
-
@request_id ||= (self.class.max_request_id = self.class.max_request_id.to_i + 1)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
53
|
def log_processing_with_request_id
|
|
27
54
|
if logger
|
|
28
55
|
logger.info "\n\nProcessing #{controller_class_name}\##{action_name} (for #{request_origin}) [#{request.method.to_s.upcase}]"
|
|
29
|
-
logger.info " Request ID: #{request_id}
|
|
56
|
+
logger.info " Request ID: #{request_id}"
|
|
30
57
|
logger.info " Session ID: #{@_session.session_id}" if @_session and @_session.respond_to?(:session_id)
|
|
31
58
|
logger.info " Parameters: #{respond_to?(:filter_parameters) ? filter_parameters(params).inspect : params.inspect}"
|
|
32
59
|
end
|
|
33
60
|
end
|
|
34
61
|
end
|
|
35
62
|
|
|
36
|
-
module
|
|
63
|
+
module Rails2x
|
|
37
64
|
def self.included(base)
|
|
38
65
|
base.class_eval do
|
|
39
66
|
alias_method_chain :log_processing_for_request_id, :request_id
|
|
@@ -43,7 +70,7 @@ module RequestId
|
|
|
43
70
|
private
|
|
44
71
|
def log_processing_for_request_id_with_request_id
|
|
45
72
|
log_processing_for_request_id_without_request_id
|
|
46
|
-
logger.info " Request ID: #{request_id}
|
|
73
|
+
logger.info " Request ID: #{request_id}"
|
|
47
74
|
end
|
|
48
75
|
end
|
|
49
76
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: maiha-request_id
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- maiha
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date:
|
|
12
|
+
date: 2009-02-16 00:00:00 -08:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies: []
|
|
15
15
|
|