alacrity-rails 0.1.1 → 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.
- checksums.yaml +4 -4
- data/lib/alacrity-rails.rb +5 -1
- data/lib/alacrity-rails/client.rb +4 -16
- data/lib/alacrity-rails/probe/action_controller.rb +18 -0
- data/lib/alacrity-rails/probe/action_view.rb +18 -0
- data/lib/alacrity-rails/probe/active_model_serializers.rb +18 -0
- data/lib/alacrity-rails/probe/active_record.rb +18 -0
- data/lib/alacrity-rails/probe/mongo_driver.rb +20 -5
- data/lib/alacrity-rails/railtie.rb +7 -19
- data/lib/alacrity-rails/transaction/web_transaction.rb +10 -29
- data/lib/alacrity-rails/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 453dd5ed4a8173cab3ccca146a1fa7827cc81d2e
|
4
|
+
data.tar.gz: 6959b45a643e9a7e8814af00710eb61a188abd97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a284cb2d4c66c43244e0689f5499fc81cc96cdda869951b9266dbc1f744d5225f8ad7e1bf3975f272dd87bc3c4b8bb837573fd1d592ba475af769bf299c389e7
|
7
|
+
data.tar.gz: 9da624496779a56b6dd4b1db105fc97b975fef39368b9e443acdea6a4877d3dff7713c643b9a5ddb4b2d3c166c5462e08056ae594d32885225761ea05718de3e
|
data/lib/alacrity-rails.rb
CHANGED
@@ -12,7 +12,11 @@ module AlacrityRails
|
|
12
12
|
autoload :VERSION, 'alacrity-rails/version'
|
13
13
|
|
14
14
|
module Probe
|
15
|
-
autoload :
|
15
|
+
autoload :ActionController, 'alacrity-rails/probe/action_controller'
|
16
|
+
autoload :ActionView, 'alacrity-rails/probe/action_view'
|
17
|
+
autoload :ActiveModelSerializers, 'alacrity-rails/probe/active_model_serializers'
|
18
|
+
autoload :ActiveRecord, 'alacrity-rails/probe/active_record'
|
19
|
+
autoload :MongoDriver, 'alacrity-rails/probe/mongo_driver'
|
16
20
|
end
|
17
21
|
|
18
22
|
module Transaction
|
@@ -5,24 +5,12 @@ module AlacrityRails
|
|
5
5
|
new_transaction!(env)
|
6
6
|
end
|
7
7
|
|
8
|
-
def self.
|
9
|
-
|
10
|
-
transaction.store_request_metrics(started_at, ended_at, data)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.store_database_metrics(started_at, ended_at, data)
|
15
|
-
if transaction
|
16
|
-
transaction.store_database_metrics(started_at, ended_at, data)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.store_serializer_metrics(started_at, ended_at, data)
|
21
|
-
transaction&.store_serializer_metrics(started_at, ended_at, data)
|
8
|
+
def self.store_request(data)
|
9
|
+
transaction&.store_request(data)
|
22
10
|
end
|
23
11
|
|
24
|
-
def self.
|
25
|
-
transaction&.
|
12
|
+
def self.store_timeline_event(data)
|
13
|
+
transaction&.store_timeline_event(data)
|
26
14
|
end
|
27
15
|
|
28
16
|
def self.close_transaction!
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module AlacrityRails
|
2
|
+
module Probe
|
3
|
+
class ActionController
|
4
|
+
def self.activate
|
5
|
+
ActiveSupport::Notifications.subscribe 'process_action.action_controller' do |name, started, finished, unique_id, data|
|
6
|
+
AlacrityRails::Client.store_request(
|
7
|
+
started_at: started,
|
8
|
+
finished_at: finished,
|
9
|
+
controller: data[:controller],
|
10
|
+
action: data[:action],
|
11
|
+
format: data[:format],
|
12
|
+
status: data[:status]
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module AlacrityRails
|
2
|
+
module Probe
|
3
|
+
class ActionView
|
4
|
+
def self.activate
|
5
|
+
ActiveSupport::Notifications.subscribe 'render_partial.action_view' do |name, started, finished, unique_id, data|
|
6
|
+
AlacrityRails::Client.store_timeline_event(
|
7
|
+
name: 'Template',
|
8
|
+
event_type: 'template',
|
9
|
+
engine: 'ActionView',
|
10
|
+
started_at: started,
|
11
|
+
finished_at: finished,
|
12
|
+
detail: data[:identifier]
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module AlacrityRails
|
2
|
+
module Probe
|
3
|
+
class ActiveModelSerializers
|
4
|
+
def self.activate
|
5
|
+
ActiveSupport::Notifications.subscribe 'render.active_model_serializers' do |name, started, finished, unique_id, data|
|
6
|
+
AlacrityRails::Client.store_timeline_event(
|
7
|
+
name: 'Template',
|
8
|
+
event_type: 'template',
|
9
|
+
engine: 'ActiveModel::Serializers',
|
10
|
+
started_at: started,
|
11
|
+
finished_at: finished,
|
12
|
+
detail: data[:serializer].to_s
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module AlacrityRails
|
2
|
+
module Probe
|
3
|
+
class ActiveRecord
|
4
|
+
def self.activate
|
5
|
+
ActiveSupport::Notifications.subscribe 'sql.active_record' do |name, started, finished, unique_id, data|
|
6
|
+
AlacrityRails::Client.store_timeline_event(
|
7
|
+
name: data[:name],
|
8
|
+
event_type: 'database',
|
9
|
+
engine: 'ActiveRecord',
|
10
|
+
started_at: started,
|
11
|
+
finished_at: finished,
|
12
|
+
detail: data[:sql]
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,6 +1,12 @@
|
|
1
1
|
module AlacrityRails
|
2
2
|
module Probe
|
3
3
|
class MongoDriver
|
4
|
+
def self.activate
|
5
|
+
if defined?(Mongo)
|
6
|
+
Mongo::Monitoring::Global.subscribe(Mongo::Monitoring::COMMAND, new)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
4
10
|
def start_events
|
5
11
|
@start_events ||= {}
|
6
12
|
end
|
@@ -18,15 +24,24 @@ module AlacrityRails
|
|
18
24
|
command[key] = value.respond_to?(:keys) ? value.keys : value
|
19
25
|
end
|
20
26
|
|
21
|
-
|
22
|
-
name: "#{event.database_name}.#{event.command_name}",
|
23
|
-
sql: command.to_s
|
24
|
-
}
|
25
|
-
AlacrityRails::Client.store_database_metrics(start_event[:started_at], finished, data)
|
27
|
+
store(event.command_name, start_event[:started_at], finished, command)
|
26
28
|
rescue => error
|
27
29
|
Logger.error("Alacrity mongo driver tracking failed: #{error.inspect}")
|
28
30
|
end
|
29
31
|
alias failed succeeded
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
35
|
+
def store(command_name, started_at, finished_at, command)
|
36
|
+
AlacrityRails::Client.store_timeline_event(
|
37
|
+
name: command_name,
|
38
|
+
event_type: 'database',
|
39
|
+
engine: 'Mongo',
|
40
|
+
started_at: started_at,
|
41
|
+
finished_at: finished_at,
|
42
|
+
detail: command.to_s
|
43
|
+
)
|
44
|
+
end
|
30
45
|
end
|
31
46
|
end
|
32
47
|
end
|
@@ -6,25 +6,13 @@ module AlacrityRails
|
|
6
6
|
|
7
7
|
config.middleware.insert_before 0, AlacrityRails::Middleware
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
if defined?(Mongo)
|
18
|
-
Mongo::Monitoring::Global.subscribe(Mongo::Monitoring::COMMAND, AlacrityRails::Probe::MongoDriver.new)
|
19
|
-
end
|
20
|
-
|
21
|
-
ActiveSupport::Notifications.subscribe 'render.active_model_serializers' do |name, started, finished, unique_id, data|
|
22
|
-
AlacrityRails::Client.store_serializer_metrics(started, finished, data)
|
23
|
-
end
|
24
|
-
|
25
|
-
ActiveSupport::Notifications.subscribe 'render_partial.action_view' do |name, started, finished, unique_id, data|
|
26
|
-
AlacrityRails::Client.store_template_metrics(started, finished, data)
|
27
|
-
end
|
9
|
+
[
|
10
|
+
Probe::ActionController,
|
11
|
+
Probe::ActionView,
|
12
|
+
Probe::ActiveModelSerializers,
|
13
|
+
Probe::ActiveRecord,
|
14
|
+
Probe::MongoDriver
|
15
|
+
].each(&:activate)
|
28
16
|
end
|
29
17
|
end
|
30
18
|
end
|
@@ -9,42 +9,23 @@ module AlacrityRails::Transaction
|
|
9
9
|
self.method = env['REQUEST_METHOD']
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
event_type: 'database',
|
16
|
-
started_at: absolute_time(started_at.to_datetime),
|
17
|
-
finished_at: absolute_time(finished_at.to_datetime),
|
18
|
-
detail: data[:sql]
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
def store_request_metrics(started_at, finished_at, data)
|
23
|
-
self.framework_started_at = absolute_time(started_at.to_datetime)
|
24
|
-
self.framework_finished_at = absolute_time(finished_at.to_datetime)
|
12
|
+
def store_request(data)
|
13
|
+
self.framework_started_at = absolute_time(data[:started_at].to_datetime)
|
14
|
+
self.framework_finished_at = absolute_time(data[:finished_at].to_datetime)
|
25
15
|
self.controller = data[:controller]
|
26
16
|
self.action = data[:action]
|
27
17
|
self.format = data[:format]
|
28
18
|
self.status = data[:status]
|
29
19
|
end
|
30
20
|
|
31
|
-
def
|
21
|
+
def store_timeline_event(data)
|
32
22
|
timeline_events << {
|
33
|
-
name:
|
34
|
-
event_type:
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
def store_template_metrics(started_at, finished_at, data)
|
42
|
-
timeline_events << {
|
43
|
-
name: 'Template',
|
44
|
-
event_type: 'template',
|
45
|
-
started_at: absolute_time(started_at.to_datetime),
|
46
|
-
finished_at: absolute_time(finished_at.to_datetime),
|
47
|
-
detail: data[:identifier]
|
23
|
+
name: data[:name],
|
24
|
+
event_type: data[:event_type],
|
25
|
+
engine: data[:engine],
|
26
|
+
started_at: absolute_time(data[:started_at].to_datetime),
|
27
|
+
finished_at: absolute_time(data[:finished_at].to_datetime),
|
28
|
+
detail: data[:detail]
|
48
29
|
}
|
49
30
|
end
|
50
31
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alacrity-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alacrity, LLC
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -39,6 +39,10 @@ files:
|
|
39
39
|
- lib/alacrity-rails/config.rb
|
40
40
|
- lib/alacrity-rails/connection_tester.rb
|
41
41
|
- lib/alacrity-rails/middleware.rb
|
42
|
+
- lib/alacrity-rails/probe/action_controller.rb
|
43
|
+
- lib/alacrity-rails/probe/action_view.rb
|
44
|
+
- lib/alacrity-rails/probe/active_model_serializers.rb
|
45
|
+
- lib/alacrity-rails/probe/active_record.rb
|
42
46
|
- lib/alacrity-rails/probe/mongo_driver.rb
|
43
47
|
- lib/alacrity-rails/railtie.rb
|
44
48
|
- lib/alacrity-rails/server_config.rb
|