module TingYun::Instrumentation::Support::JavascriptInstrument
Constants
- GT
Public Instance Methods
browser_instrument(js)
click to toggle source
# 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)
click to toggle source
# File lib/ting_yun/instrumentation/support/javascript_instrumentor.rb, line 43 def browser_timing_config(state) timings = state.timings data = { :id => TingYun::Agent.config[:idSecret], :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()
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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
rum_enable?()
click to toggle source
# File lib/ting_yun/instrumentation/support/javascript_instrumentor.rb, line 24 def rum_enable? TingYun::Agent.config[:'nbs.rum.enabled'] end