Class: AlacrityRails::Client
- Inherits:
-
Object
- Object
- AlacrityRails::Client
- Defined in:
- lib/alacrity-rails/client.rb
Class Method Summary collapse
- .cleanup ⇒ Object
- .close_transaction!(response) ⇒ Object
- .log_server_startup ⇒ Object
- .open_transaction(env) ⇒ Object
- .start_transmission_worker ⇒ Object
- .store_request(data) ⇒ Object
- .store_timeline_event(data) ⇒ Object
- .transaction ⇒ Object
- .transmission_queue ⇒ Object
- .transmit(transactable) ⇒ Object
Class Method Details
.cleanup ⇒ Object
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_startup ⇒ Object
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_worker ⇒ Object
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 |
.transaction ⇒ Object
32 33 34 |
# File 'lib/alacrity-rails/client.rb', line 32 def self.transaction Thread.current[:alacrity_transaction] end |
.transmission_queue ⇒ Object
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 |