sleuth 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/lib/sleuth.rb +31 -4
  2. data/lib/sleuth/transaction.rb +3 -3
  3. metadata +1 -1
@@ -5,9 +5,13 @@ require 'active_support/core_ext/class/attribute_accessors'
5
5
  require 'active_support/notifications'
6
6
  require 'active_support/buffered_logger'
7
7
 
8
+ require 'time'
9
+
8
10
  module Sleuth
9
11
  TRANSACTION_HEADER = "X_SLEUTH_TRANSACTION"
10
12
 
13
+ class OutsideTransaction < StandardError; end
14
+
11
15
  class << self
12
16
  delegate :head, :get, :post, :put, :delete, :to => :http
13
17
 
@@ -18,14 +22,18 @@ module Sleuth
18
22
  end
19
23
 
20
24
  def instrument(payload)
21
- ActiveSupport::Notifications.instrument(:sleuth, payload) do
22
- yield
25
+ if inside_transaction?
26
+ ActiveSupport::Notifications.instrument(:sleuth, payload) do
27
+ yield
28
+ end
29
+ else
30
+ raise OutsideTransaction, "You are outside of a transaction"
23
31
  end
24
32
  end
25
33
 
26
34
  def transaction(current_name, parent = nil)
27
35
  ActiveSupport::Notifications.transaction do
28
- Transaction.create(current_name, current_id, parent)
36
+ Transaction.create(current_name, parent)
29
37
 
30
38
  yield
31
39
  end
@@ -39,10 +47,29 @@ module Sleuth
39
47
  Transaction.running[current_id]
40
48
  end
41
49
 
50
+ def inside_transaction?
51
+ current_transaction
52
+ end
53
+
54
+ def thread(name)
55
+ parent = current_transaction && current_transaction.full_name
56
+ Thread.new {
57
+ transaction(name, parent) do
58
+ yield
59
+ end
60
+ }
61
+ end
62
+
42
63
  def watch(log_path)
43
64
  logger = ActiveSupport::BufferedLogger.new(log_path)
65
+ subscribe do |event|
66
+ logger.debug(Transaction.message_for(event))
67
+ end
68
+ end
69
+
70
+ def subscribe
44
71
  ActiveSupport::Notifications.subscribe('sleuth') do |*args|
45
- logger.debug(Transaction.message_for(*args))
72
+ yield Event.new(*args)
46
73
  end
47
74
  end
48
75
  end
@@ -13,12 +13,12 @@ module Sleuth
13
13
  mattr_reader :running
14
14
  @@running = {}
15
15
 
16
- def self.create(name, id, parent)
16
+ def self.create(name, parent)
17
+ id = Sleuth.current_id
17
18
  running[id] = new(name, id, Time.now.to_i, Process.pid, parent)
18
19
  end
19
20
 
20
- def self.message_for(*args)
21
- event = Event.new(*args)
21
+ def self.message_for(event)
22
22
  transaction = running[event.transaction_id]
23
23
  transaction.message_for(event)
24
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sleuth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Carey-Smith