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