Module: OneApm::Transaction::TransactionName

Included in:
OneApm::Transaction
Defined in:
lib/one_apm/transaction/transaction_name.rb

Instance Method Summary collapse

Instance Method Details

#best_nameObject



57
58
59
60
# File 'lib/one_apm/transaction/transaction_name.rb', line 57

def best_name
  @frozen_name  || @overridden_name ||
    @default_name || Transaction::OA_UNKNOWN_METRIC
end

#default_name=(name) ⇒ Object



11
12
13
# File 'lib/one_apm/transaction/transaction_name.rb', line 11

def default_name=(name)
  @default_name = filter name
end

#filter(name) ⇒ Object



19
20
21
22
# File 'lib/one_apm/transaction/transaction_name.rb', line 19

def filter name
  encoded_name = Helper.correctly_encoded(name)
  encoded_name ? encoded_name.gsub("Controller", "WebTransaction/Uri") : nil
end

#freeze_name_and_execute_if_not_ignoredObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/one_apm/transaction/transaction_name.rb', line 74

def freeze_name_and_execute_if_not_ignored
  if !name_frozen?
    name = promoted_transaction_name(best_name)
    name = OneApm::Manager.agent.transaction_rules.rename(name)
    @name_frozen = true

    if name.nil?
      ignore!
      self.frozen_name = best_name
    else
      self.frozen_name = name
    end
  end

  if block_given? && !@ignore_this_transaction
    yield
  end
end

#frozen_name=(name) ⇒ Object



15
16
17
# File 'lib/one_apm/transaction/transaction_name.rb', line 15

def frozen_name=(name)
  @frozen_name = filter name
end

#influences_transaction_name?(category) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/one_apm/transaction/transaction_name.rb', line 53

def influences_transaction_name?(category)
  !category || frame_stack.size == 1 || similar_category?(category)
end

#log_frozen_name(name) ⇒ Object



48
49
50
51
# File 'lib/one_apm/transaction/transaction_name.rb', line 48

def log_frozen_name(name)
  OneApm::Manager.logger.warn("Attempted to rename transaction to '#{name}' after transaction name was already frozen as '#{@frozen_name}'.")
  nil
end

#make_transaction_name(name, category = nil) ⇒ Object



24
25
26
# File 'lib/one_apm/transaction/transaction_name.rb', line 24

def make_transaction_name(name, category = nil)
  "#{OneApm::TransactionNamer.prefix_for_category(self, category)}#{name}"
end

#name_frozen?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/one_apm/transaction/transaction_name.rb', line 93

def name_frozen?
  @frozen_name ? true : false
end

#name_last_frame(name) ⇒ Object



44
45
46
# File 'lib/one_apm/transaction/transaction_name.rb', line 44

def name_last_frame(name)
  frame_stack.last.name = filter(name)
end

#name_set?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/one_apm/transaction/transaction_name.rb', line 62

def name_set?
  (@overridden_name || @default_name) ? true : false
end

#overridden_name=(name) ⇒ Object



7
8
9
# File 'lib/one_apm/transaction/transaction_name.rb', line 7

def overridden_name=(name)
  @overridden_name = filter name
end


66
67
68
69
70
71
72
# File 'lib/one_apm/transaction/transaction_name.rb', line 66

def promoted_transaction_name(name)
  if name.start_with?(Transaction::OA_MIDDLEWARE_PREFIX)
    "#{Transaction::OA_WEB_TRANSACTION_PREFIX}#{name}"
  else
    name
  end
end

#set_default_transaction_name(name, category) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/one_apm/transaction/transaction_name.rb', line 28

def set_default_transaction_name(name, category)
  return log_frozen_name(name) if name_frozen?
  if influences_transaction_name?(category)
    self.default_name = name
    @category = category if category
  end
end

#set_overriding_transaction_name(name, category) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/one_apm/transaction/transaction_name.rb', line 36

def set_overriding_transaction_name(name, category)
  return log_frozen_name(name) if name_frozen?
  if influences_transaction_name?(category)
    self.overridden_name = name
    @category = category if category
  end
end