time_bandits 0.1.4 → 0.2.0
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.
@@ -8,15 +8,7 @@ module ActionController #:nodoc:
|
|
8
8
|
# patch to ensure that the completed line is always written to the log
|
9
9
|
def process_action(action, *args)
|
10
10
|
|
11
|
-
raw_payload =
|
12
|
-
:controller => self.class.name,
|
13
|
-
:action => self.action_name,
|
14
|
-
:params => request.filtered_parameters,
|
15
|
-
:formats => request.formats.map(&:to_sym),
|
16
|
-
:method => request.method,
|
17
|
-
:path => (request.fullpath rescue "unknown")
|
18
|
-
}
|
19
|
-
|
11
|
+
raw_payload = get_raw_payload(action)
|
20
12
|
ActiveSupport::Notifications.instrument("start_processing.action_controller", raw_payload.dup)
|
21
13
|
|
22
14
|
exception = nil
|
@@ -59,6 +51,34 @@ module ActionController #:nodoc:
|
|
59
51
|
runtime - consumed_during_rendering*1000
|
60
52
|
end
|
61
53
|
|
54
|
+
private
|
55
|
+
|
56
|
+
if Rails::VERSION::STRING =~ /^3\.2/
|
57
|
+
def get_raw_payload(action)
|
58
|
+
{
|
59
|
+
:controller => self.class.name,
|
60
|
+
:action => self.action_name,
|
61
|
+
:params => request.filtered_parameters,
|
62
|
+
:formats => request.formats.map(&:to_sym),
|
63
|
+
:method => request.method,
|
64
|
+
:path => (request.fullpath rescue "unknown")
|
65
|
+
}
|
66
|
+
end
|
67
|
+
elsif Rails::VERSION::STRING =~ /^3\.[01]/
|
68
|
+
def get_raw_payload(action)
|
69
|
+
{
|
70
|
+
:controller => self.class.name,
|
71
|
+
:action => self.action_name,
|
72
|
+
:params => request.filtered_parameters,
|
73
|
+
:format => request.format.try(:ref),
|
74
|
+
:method => request.method,
|
75
|
+
:path => (request.fullpath rescue "unknown")
|
76
|
+
}
|
77
|
+
end
|
78
|
+
else
|
79
|
+
raise "time_bandits ActionController monkey patch is not compatible with your Rails version"
|
80
|
+
end
|
81
|
+
|
62
82
|
module ClassMethods
|
63
83
|
def log_process_action(payload) #:nodoc:
|
64
84
|
messages, view_runtime = [], payload[:view_runtime]
|
@@ -3,8 +3,8 @@
|
|
3
3
|
# and the number of query cache hits
|
4
4
|
# it needs to be adapted to each new rails version
|
5
5
|
|
6
|
-
raise "
|
7
|
-
|
6
|
+
raise "time_bandits ActiveRecord monkey patch is not compatible with your rails version" unless
|
7
|
+
Rails::VERSION::STRING =~ /^3\.[012]/
|
8
8
|
|
9
9
|
require "active_record/log_subscriber"
|
10
10
|
|
@@ -46,8 +46,19 @@ module ActiveRecord
|
|
46
46
|
|
47
47
|
return unless logger.debug?
|
48
48
|
|
49
|
-
|
50
|
-
|
49
|
+
payload = event.payload
|
50
|
+
|
51
|
+
return if 'SCHEMA' == payload[:name]
|
52
|
+
|
53
|
+
name = '%s (%.1fms)' % [payload[:name], event.duration]
|
54
|
+
sql = payload[:sql].squeeze(' ')
|
55
|
+
binds = nil
|
56
|
+
|
57
|
+
unless (payload[:binds] || []).empty?
|
58
|
+
binds = " " + payload[:binds].map { |col,v|
|
59
|
+
[col.name, v]
|
60
|
+
}.inspect
|
61
|
+
end
|
51
62
|
|
52
63
|
if odd?
|
53
64
|
name = color(name, CYAN, true)
|
@@ -56,7 +67,7 @@ module ActiveRecord
|
|
56
67
|
name = color(name, MAGENTA, true)
|
57
68
|
end
|
58
69
|
|
59
|
-
debug " #{name} #{sql}"
|
70
|
+
debug " #{name} #{sql}#{binds}"
|
60
71
|
end
|
61
72
|
end
|
62
73
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module TimeBandits
|
2
2
|
module Rack
|
3
3
|
class Logger < ActiveSupport::LogSubscriber
|
4
|
-
|
4
|
+
# TODO: how to deal with tags
|
5
|
+
def initialize(app, tags=nil)
|
5
6
|
@app = app
|
6
7
|
end
|
7
8
|
|
@@ -20,10 +21,9 @@ module TimeBandits
|
|
20
21
|
Thread.current[:time_bandits_completed_info] = nil
|
21
22
|
|
22
23
|
request = ActionDispatch::Request.new(env)
|
23
|
-
path = request.
|
24
|
+
path = request.filtered_path
|
24
25
|
|
25
|
-
info "\n\nStarted #{request.request_method} \"#{path}\" "
|
26
|
-
"for #{request.ip} at #{start_time.to_default_s}"
|
26
|
+
info "\n\nStarted #{request.request_method} \"#{path}\" for #{request.ip} at #{start_time.to_default_s}"
|
27
27
|
end
|
28
28
|
|
29
29
|
def after_dispatch(env, result, run_time)
|
@@ -33,7 +33,7 @@ module TimeBandits
|
|
33
33
|
message = "Completed #{status} #{::Rack::Utils::HTTP_STATUS_CODES[status]} in %.1fms" % (run_time*1000)
|
34
34
|
message << " (#{additions.join(' | ')})" unless additions.blank?
|
35
35
|
info message
|
36
|
-
|
36
|
+
ensure
|
37
37
|
ActiveSupport::LogSubscriber.flush_all!
|
38
38
|
end
|
39
39
|
|
data/lib/time_bandits/railtie.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
module TimeBandits
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
autoload :Logger, 'time_bandits/rack/logger'
|
5
|
+
end
|
6
|
+
|
2
7
|
class Railtie < Rails::Railtie
|
3
8
|
|
4
9
|
initializer "time_bandits" do |app|
|
5
10
|
app.config.middleware.swap("Rails::Rack::Logger", "TimeBandits::Rack::Logger")
|
6
11
|
|
7
12
|
ActiveSupport.on_load(:action_controller) do
|
8
|
-
require 'time_bandits/rack/logger.rb'
|
9
13
|
require 'time_bandits/monkey_patches/action_controller'
|
10
14
|
include ActionController::TimeBanditry
|
11
15
|
end
|
data/lib/time_bandits/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: time_bandits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Stefan Kaes
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-04-05 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|