Class: Appsignal::Transaction
- Inherits:
-
Object
- Object
- Appsignal::Transaction
show all
- Defined in:
- lib/appsignal/transaction.rb
Defined Under Namespace
Classes: GenericRequest, NilTransaction
Constant Summary
collapse
- HTTP_REQUEST =
'http_request'.freeze
- BACKGROUND_JOB =
'background_job'.freeze
- FRONTEND =
'frontend'.freeze
- ENV_METHODS =
Based on what Rails uses + some variables we’d like to show
%w(CONTENT_LENGTH AUTH_TYPE GATEWAY_INTERFACE
PATH_TRANSLATED REMOTE_HOST REMOTE_IDENT REMOTE_USER REMOTE_ADDR
REQUEST_METHOD SERVER_NAME SERVER_PORT SERVER_PROTOCOL REQUEST_URI PATH_INFO
HTTP_X_REQUEST_START HTTP_X_MIDDLEWARE_START HTTP_X_QUEUE_START
HTTP_X_QUEUE_TIME HTTP_X_HEROKU_QUEUE_WAIT_TIME HTTP_X_APPLICATION_START
HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE
HTTP_CACHE_CONTROL HTTP_CONNECTION HTTP_USER_AGENT HTTP_FROM HTTP_NEGOTIATE
HTTP_PRAGMA HTTP_REFERER HTTP_X_FORWARDED_FOR HTTP_CLIENT_IP).freeze
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(transaction_id, namespace, request, options = {}) ⇒ Transaction
Returns a new instance of Transaction.
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/appsignal/transaction.rb', line 35
def initialize(transaction_id, namespace, request, options={})
@transaction_id = transaction_id
@namespace = namespace
@request = request
@paused = false
@tags = {}
@store = Hash.new({})
@options = options
@options[:params_method] ||= :params
@transaction_index = Appsignal::Extension.start_transaction(@transaction_id, @namespace)
end
|
Instance Attribute Details
#namespace ⇒ Object
Returns the value of attribute namespace.
33
34
35
|
# File 'lib/appsignal/transaction.rb', line 33
def namespace
@namespace
end
|
#options ⇒ Object
Returns the value of attribute options.
33
34
35
|
# File 'lib/appsignal/transaction.rb', line 33
def options
@options
end
|
#paused ⇒ Object
Returns the value of attribute paused.
33
34
35
|
# File 'lib/appsignal/transaction.rb', line 33
def paused
@paused
end
|
#request ⇒ Object
Returns the value of attribute request.
33
34
35
|
# File 'lib/appsignal/transaction.rb', line 33
def request
@request
end
|
Returns the value of attribute tags.
33
34
35
|
# File 'lib/appsignal/transaction.rb', line 33
def tags
@tags
end
|
#transaction_id ⇒ Object
Returns the value of attribute transaction_id.
33
34
35
|
# File 'lib/appsignal/transaction.rb', line 33
def transaction_id
@transaction_id
end
|
#transaction_index ⇒ Object
Returns the value of attribute transaction_index.
33
34
35
|
# File 'lib/appsignal/transaction.rb', line 33
def transaction_index
@transaction_index
end
|
Class Method Details
.complete_current! ⇒ Object
27
28
29
30
|
# File 'lib/appsignal/transaction.rb', line 27
def complete_current!
current.complete
Thread.current[:appsignal_transaction] = nil
end
|
.create(id, namespace, request, options = {}) ⇒ Object
19
20
21
|
# File 'lib/appsignal/transaction.rb', line 19
def create(id, namespace, request, options={})
Thread.current[:appsignal_transaction] = Appsignal::Transaction.new(id, namespace, request, options)
end
|
.current ⇒ Object
23
24
25
|
# File 'lib/appsignal/transaction.rb', line 23
def current
Thread.current[:appsignal_transaction] || NilTransaction.new
end
|
Instance Method Details
#nil_transaction? ⇒ Boolean
48
49
50
|
# File 'lib/appsignal/transaction.rb', line 48
def nil_transaction?
false
end
|
#pause! ⇒ Object
59
60
61
|
# File 'lib/appsignal/transaction.rb', line 59
def pause!
@paused = true
end
|
#paused? ⇒ Boolean
67
68
69
|
# File 'lib/appsignal/transaction.rb', line 67
def paused?
@paused == true
end
|
#resume! ⇒ Object
63
64
65
|
# File 'lib/appsignal/transaction.rb', line 63
def resume!
@paused = false
end
|
#sample_data ⇒ Object
122
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/appsignal/transaction.rb', line 122
def sample_data
{
:params => sanitized_params,
:environment => sanitized_environment,
:session_data => sanitized_session_data,
:metadata => metadata,
:tags => sanitized_tags
}.each do |key, data|
set_sample_data(key, data)
end
end
|
#set_action(action) ⇒ Object
#set_error(error) ⇒ Object
Also known as:
add_exception
#set_http_or_background_action(from = request.params) ⇒ Object
84
85
86
87
88
89
90
91
|
# File 'lib/appsignal/transaction.rb', line 84
def set_http_or_background_action(from=request.params)
return unless from
group_and_action = [
from[:controller] || from[:class],
from[:action] || from[:method]
]
set_action(group_and_action.compact.join('#'))
end
|
#set_http_or_background_queue_start ⇒ Object
98
99
100
101
102
103
104
|
# File 'lib/appsignal/transaction.rb', line 98
def set_http_or_background_queue_start
if namespace == HTTP_REQUEST
set_queue_start(http_queue_start)
elsif namespace == BACKGROUND_JOB
set_queue_start(background_queue_start)
end
end
|
#set_queue_start(start) ⇒ Object
#set_sample_data(key, data) ⇒ Object
75
76
77
|
# File 'lib/appsignal/transaction.rb', line 75
def set_tags(given_tags={})
@tags.merge!(given_tags)
end
|
#store(key) ⇒ Object
71
72
73
|
# File 'lib/appsignal/transaction.rb', line 71
def store(key)
@store[key]
end
|