critique 0.1.3 → 0.2.0
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.
- data/lib/critique.rb +16 -7
- data/lib/critique/profiling.rb +17 -9
- data/lib/critique/version.rb +1 -1
- metadata +13 -13
data/lib/critique.rb
CHANGED
|
@@ -9,16 +9,25 @@ module Critique
|
|
|
9
9
|
base.extend(ClassMethods)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
def profile(
|
|
12
|
+
def profile(*)
|
|
13
13
|
yield
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def disable!
|
|
17
|
-
module_eval
|
|
17
|
+
module_eval <<-RUBY, __FILE__, __LINE__+1
|
|
18
|
+
def self.profile(*)
|
|
19
|
+
yield
|
|
20
|
+
end
|
|
21
|
+
RUBY
|
|
22
|
+
@_enabled = false
|
|
18
23
|
end
|
|
19
24
|
|
|
20
25
|
def enable!
|
|
21
|
-
module_eval
|
|
26
|
+
module_eval <<-RUBY, __FILE__, __LINE__+1
|
|
27
|
+
def self.profile(*args, &block)
|
|
28
|
+
Profiling.profile(*(args.insert(1,2)), &block)
|
|
29
|
+
end
|
|
30
|
+
RUBY
|
|
22
31
|
@_enabled = true
|
|
23
32
|
end
|
|
24
33
|
|
|
@@ -40,12 +49,12 @@ module Critique
|
|
|
40
49
|
end
|
|
41
50
|
|
|
42
51
|
module ClassMethods
|
|
43
|
-
def critique(&block)
|
|
44
|
-
Critique.profile(self, &block)
|
|
52
|
+
def critique(*args, &block)
|
|
53
|
+
Critique.profile(*([self] + args), &block)
|
|
45
54
|
end
|
|
46
55
|
end
|
|
47
56
|
|
|
48
|
-
def critique(&block)
|
|
49
|
-
Critique.profile(self, &block)
|
|
57
|
+
def critique(*args, &block)
|
|
58
|
+
Critique.profile(*([self] + args), &block)
|
|
50
59
|
end
|
|
51
60
|
end
|
data/lib/critique/profiling.rb
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
module Critique
|
|
2
2
|
module Profiling
|
|
3
|
-
def self.profile(
|
|
4
|
-
|
|
3
|
+
def self.profile(*args)
|
|
4
|
+
base = args.shift
|
|
5
|
+
offset = args.shift
|
|
6
|
+
interests = args
|
|
7
|
+
|
|
8
|
+
method_name = caller[offset] =~ /`([^']*)'/ && $1
|
|
5
9
|
method_text = label_for(base, method_name)
|
|
6
10
|
|
|
7
|
-
Profiler.enter(method_text)
|
|
11
|
+
Profiler.enter(method_text, interests)
|
|
8
12
|
result = yield # (Profiler)
|
|
9
|
-
Profiler.leave(method_text)
|
|
13
|
+
Profiler.leave(method_text, interests)
|
|
10
14
|
|
|
11
15
|
result
|
|
12
16
|
end
|
|
@@ -17,25 +21,28 @@ module Critique
|
|
|
17
21
|
Critique.logger.info(['X', padding, message].join)
|
|
18
22
|
end
|
|
19
23
|
|
|
20
|
-
def enter(label)
|
|
24
|
+
def enter(label, interests)
|
|
21
25
|
padding(:+)
|
|
26
|
+
|
|
22
27
|
before = stack.push(system_usage.push(label)).last
|
|
28
|
+
found = (interests.map { |mod| [mod, ObjectSpace.each_object(mod).count].join(':') })
|
|
23
29
|
|
|
24
|
-
info(([label, '-->', filler(label)] + pretty(before)).join(' '))
|
|
30
|
+
info(([label, '-->', filler(label)] + pretty(before, found)).join(' '))
|
|
25
31
|
end
|
|
26
32
|
|
|
27
|
-
def leave(label)
|
|
33
|
+
def leave(label, interests)
|
|
34
|
+
found = (interests.map { |mod| [mod, ObjectSpace.each_object(mod).count].join(':') })
|
|
28
35
|
before = stack.pop
|
|
29
36
|
after = system_usage
|
|
30
37
|
|
|
31
|
-
info(([label, '<--', filler(label)] + pretty(after)).join(' '))
|
|
38
|
+
info(([label, '<--', filler(label)] + pretty(after, found)).join(' '))
|
|
32
39
|
|
|
33
40
|
padding(:-)
|
|
34
41
|
end
|
|
35
42
|
|
|
36
43
|
private
|
|
37
44
|
|
|
38
|
-
def pretty(stats, diff_with = nil)
|
|
45
|
+
def pretty(stats, interests, diff_with = nil)
|
|
39
46
|
used = stats[0]
|
|
40
47
|
free = stats[1]
|
|
41
48
|
swap = stats[2]
|
|
@@ -44,6 +51,7 @@ module Critique
|
|
|
44
51
|
sprintf("free: %.2f GB", free / conversion_gb),
|
|
45
52
|
sprintf("swap: %.2f GB", swap / conversion_gb)
|
|
46
53
|
]
|
|
54
|
+
result << "interests: #{interests.join(', ')}" if interests.length > 0
|
|
47
55
|
|
|
48
56
|
# WIP:
|
|
49
57
|
# if diff_with
|
data/lib/critique/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: critique
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-05-
|
|
12
|
+
date: 2012-05-25 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70281239721440 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70281239721440
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rake
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70281239720960 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ! '>='
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: '0'
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70281239720960
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rspec
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70281239720540 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: '0'
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70281239720540
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: rr
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70281239720040 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: '0'
|
|
55
55
|
type: :development
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70281239720040
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: simplecov
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &70281239719560 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ! '>='
|
|
@@ -65,7 +65,7 @@ dependencies:
|
|
|
65
65
|
version: '0'
|
|
66
66
|
type: :development
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *70281239719560
|
|
69
69
|
description: critiques your code
|
|
70
70
|
email:
|
|
71
71
|
- corey@coolerator.net
|
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
108
108
|
version: '0'
|
|
109
109
|
segments:
|
|
110
110
|
- 0
|
|
111
|
-
hash:
|
|
111
|
+
hash: 2381292961732916691
|
|
112
112
|
requirements: []
|
|
113
113
|
rubyforge_project:
|
|
114
114
|
rubygems_version: 1.8.11
|