stackify-ruby-apm 1.6.1 → 1.7.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.
- checksums.yaml +4 -4
- data/lib/stackify_apm/config.rb +14 -6
- data/lib/stackify_apm/middleware.rb +12 -11
- data/lib/stackify_apm/response_manipulator.rb +6 -21
- data/lib/stackify_apm/version.rb +1 -1
- data/lib/stackify_ruby_apm.rb +3 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca22a5a75e1ae02e39bea7fa1330da6530c522cf33f3e82f4aec4aec2515ef79
|
4
|
+
data.tar.gz: 3ce816108dfed9e9abdd268b127b5795a41be911da28d16afcc0262e369847f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9a115fe042f1f9b3021af173ba229ba2bfab15c5685bf57cf851e6292089252f321966c7cf85622942ef853750961641980a38db8452b07e79a17c17a5bc79d
|
7
|
+
data.tar.gz: 2ce4459279a1661b6ef016ccc33ddf5d9b01d9e2a1eea94e732be98101699920e5ba068d226d2711ac0c754014b6c0607c4b5c441ac476aa72edf8ff39c67ea0
|
data/lib/stackify_apm/config.rb
CHANGED
@@ -19,6 +19,10 @@ module StackifyRubyAPM
|
|
19
19
|
environment_name: ENV['RAILS_ENV'] || ENV['RACK_ENV'],
|
20
20
|
already_instrumented_flag: false,
|
21
21
|
rum_auto_injection: false,
|
22
|
+
rum_enabled: false,
|
23
|
+
rum_cookie_max_age: 0,
|
24
|
+
rum_cookie_path: '/',
|
25
|
+
rum_cookie_name: '.Stackify.Rum',
|
22
26
|
instrument: true,
|
23
27
|
debug_logging: false,
|
24
28
|
log_path: StackifyRubyAPM::Util.host_os == 'WINDOWS' ? 'C:\ProgramData\Stackify\Ruby\log\stackify-ruby-apm-1.log' : '/usr/local/stackify/stackify-ruby-apm/log/stackify-ruby-apm-1.log',
|
@@ -58,6 +62,7 @@ module StackifyRubyAPM
|
|
58
62
|
'STACKIFY_APM_ENVIRONMENT_NAME' => 'environment_name',
|
59
63
|
'STACKIFY_APM_RUM_SCRIPT_SRC' => 'rum_script_src',
|
60
64
|
'STACKIFY_APM_RUM_AUTO_INJECTION' => 'rum_auto_injection',
|
65
|
+
'STACKIFY_APM_RUM_ENABLED' => 'rum_enabled',
|
61
66
|
'STACKIFY_ALREADY_INSTRUMENTED_FLAG' => 'already_instrumented_flag',
|
62
67
|
'STACKIFY_APM_DEBUG_LOGGING' => 'debug_logging',
|
63
68
|
'STACKIFY_APM_INSTRUMENT' => [:bool, 'instrument'],
|
@@ -77,13 +82,12 @@ module StackifyRubyAPM
|
|
77
82
|
|
78
83
|
def initialize(options = {})
|
79
84
|
set_defaults
|
80
|
-
|
81
85
|
set_from_args(options)
|
82
86
|
set_from_config_file
|
83
87
|
set_from_env
|
84
88
|
|
85
89
|
yield self if block_given?
|
86
|
-
|
90
|
+
debug_logger
|
87
91
|
StackifyRubyAPM::Util.host_os == 'WINDOWS' ? load_stackify_props_windows : load_stackify_props
|
88
92
|
end
|
89
93
|
|
@@ -92,6 +96,10 @@ module StackifyRubyAPM
|
|
92
96
|
attr_accessor :environment_name
|
93
97
|
attr_accessor :rum_script_src
|
94
98
|
attr_accessor :rum_auto_injection
|
99
|
+
attr_accessor :rum_enabled
|
100
|
+
attr_accessor :rum_cookie_max_age
|
101
|
+
attr_accessor :rum_cookie_path
|
102
|
+
attr_accessor :rum_cookie_name
|
95
103
|
attr_accessor :already_instrumented_flag
|
96
104
|
attr_accessor :rum_script_injected
|
97
105
|
attr_accessor :instrument
|
@@ -203,8 +211,8 @@ module StackifyRubyAPM
|
|
203
211
|
end
|
204
212
|
|
205
213
|
def debug_logger
|
206
|
-
|
207
|
-
logger = StackifyLogger.new(
|
214
|
+
debugger_logpath = log_path == '-' ? $stdout : log_path
|
215
|
+
logger = StackifyLogger.new(debugger_logpath, debugger_filenum_rotate, debugger_byte_size)
|
208
216
|
logger.level = log_level
|
209
217
|
self.logger = logger
|
210
218
|
end
|
@@ -265,8 +273,8 @@ module StackifyRubyAPM
|
|
265
273
|
# rubocop:enable Naming/AccessorMethodName
|
266
274
|
|
267
275
|
def build_logger
|
268
|
-
|
269
|
-
logger = StackifyLogger.new(
|
276
|
+
debugger_logpath = log_path == '-' ? $stdout : log_path
|
277
|
+
logger = StackifyLogger.new(debugger_logpath, debugger_filenum_rotate, debugger_byte_size)
|
270
278
|
logger.level = log_level
|
271
279
|
self.logger = logger
|
272
280
|
end
|
@@ -50,18 +50,19 @@ module StackifyRubyAPM
|
|
50
50
|
|
51
51
|
if okay_to_modify?
|
52
52
|
@configuration.already_instrumented_flag = true
|
53
|
-
if
|
54
|
-
|
53
|
+
if @configuration.rum_auto_injection
|
54
|
+
response_string = response_manupulate.adjust_pagehtml_response
|
55
|
+
end
|
56
|
+
if response_string
|
57
|
+
response = Rack::Response.new(response_string, @rack_status, @rack_headers)
|
58
|
+
response.set_cookie(@configuration.rum_cookie_name, value: transaction.id, path: @configuration.rum_cookie_path, max_age: @configuration.rum_cookie_max_age) if @configuration.rum_enabled
|
59
|
+
resp = response.finish
|
60
|
+
elsif @configuration.rum_enabled
|
61
|
+
response = Rack::Response.new @rack_body, @rack_status, @rack_headers
|
62
|
+
response.set_cookie(@configuration.rum_cookie_name, value: transaction.id, path: @configuration.rum_cookie_path, max_age: @configuration.rum_cookie_max_age)
|
63
|
+
resp = response.finish
|
55
64
|
else
|
56
|
-
|
57
|
-
response_string = response_manupulate.call_manipulate
|
58
|
-
end
|
59
|
-
if response_string
|
60
|
-
response = Rack::Response.new(response_string, @rack_status, @rack_headers)
|
61
|
-
resp = response.finish
|
62
|
-
else
|
63
|
-
resp
|
64
|
-
end
|
65
|
+
resp
|
65
66
|
end
|
66
67
|
else
|
67
68
|
resp
|
@@ -4,9 +4,11 @@
|
|
4
4
|
# This class will manupulate the html page d: e.g., call(env)
|
5
5
|
#
|
6
6
|
#
|
7
|
+
|
7
8
|
module StackifyRubyAPM
|
8
9
|
# an abstraction for manipulating the HTML we capture in the middleware
|
9
10
|
class ResponseManipulator
|
11
|
+
include Log
|
10
12
|
attr_reader :rack_response, :jsfile_to_inject
|
11
13
|
attr_reader :rack_status, :rack_headers, :rack_body, :Rack_flagger
|
12
14
|
attr_reader :env
|
@@ -32,31 +34,13 @@ module StackifyRubyAPM
|
|
32
34
|
@config = config
|
33
35
|
end
|
34
36
|
|
35
|
-
def call_manipulate
|
36
|
-
if check_rumscript_variable
|
37
|
-
adjust_pagehtml_response(true)
|
38
|
-
else
|
39
|
-
adjust_pagehtml_response
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def check_rumscript_variable
|
44
|
-
response = @rack_body
|
45
|
-
source = gather_source(response)
|
46
|
-
close_old_response(response)
|
47
|
-
return false unless source
|
48
|
-
|
49
|
-
return true if source.include?(RUM_SCRIPT_VARIABLE)
|
50
|
-
false
|
51
|
-
end
|
52
|
-
|
53
37
|
def rebuild_rack_response
|
54
38
|
[rack_status, rack_headers, rack_body]
|
55
39
|
end
|
56
40
|
|
57
41
|
# rubocop:disable Metrics/CyclomaticComplexity
|
58
42
|
# rubocop:disable Metrics/PerceivedComplexity
|
59
|
-
def adjust_pagehtml_response
|
43
|
+
def adjust_pagehtml_response
|
60
44
|
response = @rack_body
|
61
45
|
source = gather_source(response)
|
62
46
|
close_old_response(response)
|
@@ -71,8 +55,10 @@ module StackifyRubyAPM
|
|
71
55
|
if StackifyRubyAPM.check_isdomain(client_rundomain)
|
72
56
|
inject_flag = true
|
73
57
|
else
|
74
|
-
info 'Error:
|
58
|
+
info 'RUM Injection Error: Client RUM Domain is invalid.'
|
75
59
|
end
|
60
|
+
else
|
61
|
+
info 'RUM Injection Error: No Device ID and/or Client ID found.'
|
76
62
|
end
|
77
63
|
|
78
64
|
return unless inject_flag
|
@@ -96,7 +82,6 @@ module StackifyRubyAPM
|
|
96
82
|
source = source[0...insertion_index] <<
|
97
83
|
jsfile_to_inject <<
|
98
84
|
source[insertion_index..-1]
|
99
|
-
source = source.sub('[RUM_SCRIPT_VARIABLE]', '') if rum_variable_script
|
100
85
|
end
|
101
86
|
source
|
102
87
|
end
|
data/lib/stackify_apm/version.rb
CHANGED
data/lib/stackify_ruby_apm.rb
CHANGED
@@ -25,7 +25,7 @@ require 'stackify_apm/config'
|
|
25
25
|
require 'stackify_apm/context'
|
26
26
|
require 'stackify_apm/instrumenter'
|
27
27
|
require 'stackify_apm/internal_error'
|
28
|
-
|
28
|
+
require 'stackify_apm/response_manipulator'
|
29
29
|
require 'stackify_apm/middleware'
|
30
30
|
require 'stackify_apm/instrumenter_helper'
|
31
31
|
|
@@ -34,6 +34,7 @@ require 'stackify_apm/railtie' if defined?(::Rails::Railtie)
|
|
34
34
|
|
35
35
|
# Start medoule for StackifyRubyAPM Agent
|
36
36
|
module StackifyRubyAPM
|
37
|
+
include Log
|
37
38
|
# Starts the StackifyRubyAPM Agent
|
38
39
|
#
|
39
40
|
# @param config [Config] An instance of Config
|
@@ -48,15 +49,10 @@ module StackifyRubyAPM
|
|
48
49
|
device_id = config.device_id
|
49
50
|
client_rundomain = config.client_run_domain
|
50
51
|
transaction_id = defined?(StackifyRubyAPM.current_transaction.id) ? StackifyRubyAPM.current_transaction.id : nil
|
51
|
-
|
52
52
|
inject_flag = false
|
53
53
|
|
54
54
|
if client_id && device_id
|
55
|
-
if check_isdomain(client_rundomain)
|
56
|
-
inject_flag = true
|
57
|
-
else
|
58
|
-
info 'Error: Stackify Client RUM Domain is invalid.'
|
59
|
-
end
|
55
|
+
inject_flag = true if check_isdomain(client_rundomain)
|
60
56
|
end
|
61
57
|
|
62
58
|
return unless inject_flag
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stackify-ruby-apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stackify
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|