gestalt 0.0.4 → 0.0.5

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/gestalt.gemspec +2 -2
  2. data/lib/gestalt.rb +33 -11
  3. metadata +3 -3
data/gestalt.gemspec CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'gestalt'
16
- s.version = '0.0.4'
17
- s.date = '2010-04-29'
16
+ s.version = '0.0.5'
17
+ s.date = '2010-05-01'
18
18
  s.rubyforge_project = 'gestalt'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
data/lib/gestalt.rb CHANGED
@@ -5,13 +5,30 @@ require 'formatador'
5
5
 
6
6
  class Gestalt
7
7
 
8
- VERSION = '0.0.4'
8
+ VERSION = '0.0.5'
9
9
 
10
10
  attr_accessor :calls
11
11
 
12
- def initialize(formatador = Formatador.new)
12
+ def initialize(options = {})
13
+ options = {
14
+ 'call' => true,
15
+ 'c-call' => false,
16
+ :formatador => Formatador.new
17
+ }.merge!(options)
18
+
19
+ @traceable_calls = []
20
+ @traceable_returns = []
21
+ if options['call']
22
+ @traceable_calls << 'call'
23
+ @traceable_returns << 'return'
24
+ end
25
+ if options ['c-call']
26
+ @traceable_calls << 'c-call'
27
+ @traceable_returns << 'c-return'
28
+ end
29
+
13
30
  @calls = []
14
- @formatador = formatador
31
+ @formatador = options[:formatador]
15
32
  @stack = []
16
33
  @totals = {}
17
34
  end
@@ -57,8 +74,7 @@ class Gestalt
57
74
  Kernel.set_trace_func(
58
75
  lambda do |event, file, line, id, binding, classname|
59
76
  case event
60
- when 'call', 'c-call'
61
- # p "call #{classname}##{id}"
77
+ when *@traceable_calls
62
78
  call = Gestalt::Call.new(
63
79
  :action => "#{classname}##{id}",
64
80
  :location => "#{file}:#{line}"
@@ -67,8 +83,7 @@ class Gestalt
67
83
  @stack.last.children.push(call)
68
84
  end
69
85
  @stack.push(call)
70
- when 'return', 'c-return'
71
- # p "return #{classname}##{id}"
86
+ when *@traceable_returns
72
87
  unless @stack.empty? # we get one of these when we set the trace_func
73
88
  call = @stack.pop
74
89
  call.finish
@@ -94,14 +109,14 @@ class Gestalt
94
109
  end
95
110
  end
96
111
 
97
- def self.profile(formatador = Formatador.new, &block)
98
- gestalt = new(formatador)
112
+ def self.profile(options = {}, &block)
113
+ gestalt = new(options)
99
114
  gestalt.run(&block)
100
115
  gestalt.display_profile
101
116
  end
102
117
 
103
- def self.trace(formatador = Formatador.new, &block)
104
- gestalt = new(formatador)
118
+ def self.trace(options = {}, &block)
119
+ gestalt = new(options)
105
120
  gestalt.run(&block)
106
121
  gestalt.display_calls
107
122
  end
@@ -151,6 +166,13 @@ if __FILE__ == $0
151
166
 
152
167
  end
153
168
 
169
+ Gestalt.trace('c-call' => true) do
170
+
171
+ slow = Slow.new
172
+ slow.slowing
173
+
174
+ end
175
+
154
176
  Gestalt.profile do
155
177
 
156
178
  slow = Slow.new
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 4
9
- version: 0.0.4
8
+ - 5
9
+ version: 0.0.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - geemus (Wesley Beary)
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-29 00:00:00 -07:00
17
+ date: 2010-05-01 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency