Class: AlacrityRails::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/alacrity-rails/client.rb

Class Method Summary collapse

Class Method Details

.cleanupObject



36
37
38
# File 'lib/alacrity-rails/client.rb', line 36

def self.cleanup
  Thread.current[:alacrity_transaction] = nil
end

.close_transaction!(response) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/alacrity-rails/client.rb', line 16

def self.close_transaction!(response)
  if transaction
    transaction.status = response.first
    transaction.finalize!
    transmission_queue.push(transaction)
  end
ensure
  cleanup
end

.log_server_startupObject



26
27
28
29
30
# File 'lib/alacrity-rails/client.rb', line 26

def self.log_server_startup
  Thread.new {
    transmit(AlacrityRails::Transaction::ServerStartup.new)
  }
end

.open_transaction(env) ⇒ Object



4
5
6
# File 'lib/alacrity-rails/client.rb', line 4

def self.open_transaction(env)
  new_transaction!(env)
end

.start_transmission_workerObject



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/alacrity-rails/client.rb', line 50

def self.start_transmission_worker
  Thread.new do
    loop do
      sleep AlacrityRails::Config.transmission_interval

      if transmission_queue.any?
        transmit(AlacrityRails::Transaction::BulkWebTransaction.new(
          transmission_queue.shift(transmission_queue.length)
        ))
      end
    end
  end
end

.store_request(data) ⇒ Object



8
9
10
# File 'lib/alacrity-rails/client.rb', line 8

def self.store_request(data)
  transaction&.store_request(data)
end

.store_timeline_event(data) ⇒ Object



12
13
14
# File 'lib/alacrity-rails/client.rb', line 12

def self.store_timeline_event(data)
  transaction&.store_timeline_event(data)
end

.transactionObject



32
33
34
# File 'lib/alacrity-rails/client.rb', line 32

def self.transaction
  Thread.current[:alacrity_transaction]
end

.transmission_queueObject



46
47
48
# File 'lib/alacrity-rails/client.rb', line 46

def self.transmission_queue
  @transmission_queue ||= []
end

.transmit(transactable) ⇒ Object



40
41
42
43
44
# File 'lib/alacrity-rails/client.rb', line 40

def self.transmit(transactable)
  Net::HTTP.start(*transactable.net_http_start_arguments) do |http|
    http.request(transactable.post_request)
  end
end