Module: TingYun::Instrumentation::Support::JavascriptInstrument
- Defined in:
- lib/ting_yun/instrumentation/support/javascript_instrumentor.rb
Constant Summary collapse
- GT =
"}".freeze
Class Method Summary collapse
- .browser_instrument(js) ⇒ Object
- .browser_timing_config(state) ⇒ Object
-
.browser_timing_header ⇒ Object
THREAD_LOCAL_ACCESS.
- .find_brace_end ⇒ Object
- .html_safe_if_needed(string) ⇒ Object
- .insert_js?(state) ⇒ Boolean
- .rum_enable? ⇒ Boolean
Class Method Details
.browser_instrument(js) ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/ting_yun/instrumentation/support/javascript_instrumentor.rb', line 61 def browser_instrument(js) script = TingYun::Agent.config[:'nbs.rum.script'] last_brace = script.rindex(GT) if script if last_brace script = script[0..last_brace-1] << js << script[last_brace..-1] end script end |
.browser_timing_config(state) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/ting_yun/instrumentation/support/javascript_instrumentor.rb', line 43 def browser_timing_config(state) timings = state.timings data = { :id => TingYun::Agent.config[:tingyunIdSecret], :n => state.transaction_name , :a => timings.app_time_in_millis, :q => timings.queue_time_in_millis, :tid => state.trace_id } data end |
.browser_timing_header ⇒ Object
THREAD_LOCAL_ACCESS
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/ting_yun/instrumentation/support/javascript_instrumentor.rb', line 13 def browser_timing_header #THREAD_LOCAL_ACCESS state = TingYun::Agent::TransactionState.tl_get return '' unless insert_js?(state) bt_config = TingYun::Support::Serialize::JSONWrapper.dump(browser_timing_config(state)) return '' if bt_config.empty? html_safe_if_needed("<script>#{browser_instrument("ty_rum.agent=#{bt_config}")}</script>") rescue => e ::TingYun::Agent.logger.debug "Failure during RUM browser_timing_header construction", e '' end |
.find_brace_end ⇒ Object
72 73 74 75 76 |
# File 'lib/ting_yun/instrumentation/support/javascript_instrumentor.rb', line 72 def find_brace_end script = TingYun::Agent.config[:'nbs.rum.script'] last_brace = script.rindex(GT) if script last_brace end |
.html_safe_if_needed(string) ⇒ Object
56 57 58 59 |
# File 'lib/ting_yun/instrumentation/support/javascript_instrumentor.rb', line 56 def html_safe_if_needed(string) string = string.html_safe if string.respond_to?(:html_safe) string end |
.insert_js?(state) ⇒ Boolean
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/ting_yun/instrumentation/support/javascript_instrumentor.rb', line 28 def insert_js?(state) if !state.current_transaction ::TingYun::Agent.logger.debug "Not in transaction. Skipping browser instrumentation." false elsif !state.transaction_traced? ::TingYun::Agent.logger.debug "Transaction is not traced. Skipping browser instrumentation." false elsif !state.execution_traced? ::TingYun::Agent.logger.debug "Execution is not traced. Skipping browser instrumentation." false else true end end |