Class: Appsignal::JSExceptionTransaction

Inherits:
Object
  • Object
show all
Defined in:
lib/appsignal/js_exception_transaction.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ JSExceptionTransaction

Returns a new instance of JSExceptionTransaction.



5
6
7
8
9
10
11
12
13
14
# File 'lib/appsignal/js_exception_transaction.rb', line 5

def initialize(data)
  @data = data
  @uuid = SecureRandom.uuid
  @transaction_index = Appsignal::Extension.start_transaction(@uuid, Appsignal::Transaction::FRONTEND)

  set_action
  
  set_error
  set_sample_data
end

Instance Attribute Details

#transaction_indexObject (readonly)

Returns the value of attribute transaction_index.



3
4
5
# File 'lib/appsignal/js_exception_transaction.rb', line 3

def transaction_index
  @transaction_index
end

#uuidObject (readonly)

Returns the value of attribute uuid.



3
4
5
# File 'lib/appsignal/js_exception_transaction.rb', line 3

def uuid
  @uuid
end

Instance Method Details

#complete!Object



54
55
56
# File 'lib/appsignal/js_exception_transaction.rb', line 54

def complete!
  Appsignal::Extension.finish_transaction(@transaction_index)
end

#set_actionObject



16
17
18
# File 'lib/appsignal/js_exception_transaction.rb', line 16

def set_action
  Appsignal::Extension.set_transaction_action(@transaction_index, @data['action'])
end

#set_errorObject



26
27
28
29
30
31
32
33
# File 'lib/appsignal/js_exception_transaction.rb', line 26

def set_error
  Appsignal::Extension.set_transaction_error(
    @transaction_index,
    @data['name'],
    @data['message'],
    JSON.generate(@data['backtrace'])
  )
end

#set_metadataObject



20
21
22
23
24
# File 'lib/appsignal/js_exception_transaction.rb', line 20

def 
  Appsignal::Extension.(
    @transaction_index, 'path', @data['path']
  ) if @data['path']
end

#set_sample_dataObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/appsignal/js_exception_transaction.rb', line 35

def set_sample_data
  {
    :params       => @data['params'],
    :environment  => @data['environment'],
    :tags         => @data['tags']
  }.each do |key, data|
    next unless data.is_a?(Array) || data.is_a?(Hash)
    begin
      Appsignal::Extension.set_transaction_sample_data(
        @transaction_index,
        key.to_s,
        JSON.generate(data)
      )
    rescue JSON::GeneratorError=>e
      Appsignal.logger.error("JSON generate error (#{e.message}) for '#{data.inspect}'")
    end
  end
end