stack_tracy 0.1.8 → 0.1.9
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/.travis.yml +8 -0
- data/CHANGELOG.rdoc +4 -0
- data/Gemfile +1 -0
- data/README.md +2 -2
- data/VERSION +1 -1
- data/ext/stack_tracy/stack_tracy.h +7 -0
- data/lib/stack_tracy.rb +3 -3
- data/lib/stack_tracy/event_info.rb +1 -1
- data/lib/stack_tracy/version.rb +1 -1
- data/stack_tracy.gemspec +2 -1
- data/test/unit/test_tracy.rb +34 -19
- data/ui/assets/stack_tracy.js +1 -1
- metadata +14 -2
data/.travis.yml
ADDED
data/CHANGELOG.rdoc
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# StackTracy
|
1
|
+
# StackTracy [](http://travis-ci.org/archan937/stack_tracy)
|
2
2
|
|
3
3
|
Investigate and detect slow methods within the stack trace of your Ruby (optionally Sinatra) application
|
4
4
|
|
@@ -399,7 +399,7 @@ The StackTracy repo is provided with `script/console` which you can use for deve
|
|
399
399
|
Run the following command in your console:
|
400
400
|
|
401
401
|
$ script/console
|
402
|
-
Loading development environment (StackTracy 0.1.
|
402
|
+
Loading development environment (StackTracy 0.1.9)
|
403
403
|
[1] pry(main)> stack_tracy :print do
|
404
404
|
[1] pry(main)* puts "testing"
|
405
405
|
[1] pry(main)* end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.9
|
@@ -6,6 +6,13 @@
|
|
6
6
|
#include <time.h>
|
7
7
|
#include <string.h>
|
8
8
|
|
9
|
+
#ifndef RUBY_VM
|
10
|
+
#include <node.h>
|
11
|
+
typedef rb_event_t rb_event_flag_t;
|
12
|
+
#define rb_sourcefile() (node ? node->nd_file : 0)
|
13
|
+
#define rb_sourceline() (node ? nd_line(node) : 0)
|
14
|
+
#endif
|
15
|
+
|
9
16
|
typedef struct event_info_t {
|
10
17
|
rb_event_flag_t event;
|
11
18
|
const char *file;
|
data/lib/stack_tracy.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
+
require RUBY_VERSION == "1.8.7" ? "fastercsv" : "csv"
|
1
2
|
require "erb"
|
2
|
-
require "csv"
|
3
3
|
require "tmpdir"
|
4
4
|
require "securerandom"
|
5
5
|
require "rich/support/core/string/colorize"
|
@@ -14,7 +14,7 @@ module StackTracy
|
|
14
14
|
extend self
|
15
15
|
|
16
16
|
PRESETS = {
|
17
|
-
:core => "Array BasicObject Enumerable Fixnum Float Hash IO Integer Kernel Module Mutex Numeric Object Rational String Symbol Thread Time",
|
17
|
+
:core => "Array #{"BasicObject " unless RUBY_VERSION == "1.8.7"}Enumerable Fixnum Float Hash IO Integer Kernel Module #{"Mutex " unless RUBY_VERSION == "1.8.7"}Numeric Object Rational String Symbol Thread Time",
|
18
18
|
:active_record => "ActiveRecord::Base",
|
19
19
|
:data_mapper => "DataMapper::Resource"
|
20
20
|
}
|
@@ -74,7 +74,7 @@ module StackTracy
|
|
74
74
|
File.expand_path(path).tap do |path|
|
75
75
|
bool = dump_source_location.nil? ? @options[:dump_source_location] : dump_source_location
|
76
76
|
keys = [:event, (:file if bool), (:line if bool), :singleton, :object, :method, :nsec, :time, :call, :depth, :duration]
|
77
|
-
CSV.open(path, "w", :col_sep => ";") do |file|
|
77
|
+
(RUBY_VERSION == "1.8.7" ? FasterCSV : CSV).open(path, "w", :col_sep => ";") do |file|
|
78
78
|
file << keys
|
79
79
|
select(only).each do |event|
|
80
80
|
file << event.values_at(*keys)
|
@@ -7,7 +7,7 @@ module StackTracy
|
|
7
7
|
attr_reader :event, :file, :line, :singleton, :object, :method, :nsec
|
8
8
|
|
9
9
|
def self.to_hashes(csv)
|
10
|
-
CSV.parse(csv.force_encoding("ISO-8859-1").encode("utf-8", replace
|
10
|
+
CSV.parse(csv.force_encoding("ISO-8859-1").encode("utf-8", {:replace => nil}), :headers => true, :col_sep => ";").collect do |row|
|
11
11
|
{
|
12
12
|
:event => row[0] , :file => row[1] , :line => row[2].to_i, :singleton => row[3] == "true", :object => row[4] , :method => row[5],
|
13
13
|
:nsec => row[6].to_f, :time => row[7].to_f, :call => row[8] , :depth => row[9].to_i , :duration => row[10].to_f
|
data/lib/stack_tracy/version.rb
CHANGED
data/stack_tracy.gemspec
CHANGED
@@ -13,9 +13,10 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
14
|
gem.name = "stack_tracy"
|
15
15
|
gem.require_paths = ["lib"]
|
16
|
-
gem.version = "0.1.
|
16
|
+
gem.version = "0.1.9"
|
17
17
|
|
18
18
|
gem.add_dependency "rich_support", "~> 0.1.2"
|
19
19
|
gem.add_dependency "launchy", "2.1.0"
|
20
20
|
gem.add_dependency "thor"
|
21
|
+
gem.add_dependency "fastercsv"
|
21
22
|
end
|
data/test/unit/test_tracy.rb
CHANGED
@@ -11,6 +11,14 @@ module Unit
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
+
def correct(array)
|
15
|
+
if RUBY_VERSION == "1.8.7"
|
16
|
+
array.delete_if{|x| x[:call] == "IO#puts"}
|
17
|
+
array.each{|x| x[:depth] -= 1 if x[:depth] && x[:call] == "IO#write"}
|
18
|
+
end
|
19
|
+
array
|
20
|
+
end
|
21
|
+
|
14
22
|
it "should respond to methods as expected" do
|
15
23
|
assert StackTracy.respond_to?(:config)
|
16
24
|
assert StackTracy.respond_to?(:start)
|
@@ -25,7 +33,7 @@ module Unit
|
|
25
33
|
it "should be configurable" do
|
26
34
|
StackTracy.config do |c|
|
27
35
|
assert_equal true, c.is_a?(Struct)
|
28
|
-
assert_equal
|
36
|
+
assert_equal %w(dump_dir dump_source_location limit threshold messages_only slows_only only exclude), c.members.collect(&:to_s)
|
29
37
|
c.only = "Kernel"
|
30
38
|
c.exclude = ["IO", "String"]
|
31
39
|
end
|
@@ -36,10 +44,17 @@ module Unit
|
|
36
44
|
assert_equal({:only => "Paul", :exclude => "Foo"}, StackTracy.send(:merge_options, {"only" => "Paul", "exclude" => "Foo"}))
|
37
45
|
assert_equal({:only => nil, :exclude => nil}, StackTracy.send(:merge_options, {:only => nil, :exclude => nil}))
|
38
46
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
47
|
+
if RUBY_VERSION == "1.8.7"
|
48
|
+
assert_equal(
|
49
|
+
"Array Enumerable Fixnum Float Foo Hash IO Integer Kernel Module Numeric Object Rational String Symbol Thread Time",
|
50
|
+
StackTracy.send(:mod_names, [:core, "Foo"]).strip
|
51
|
+
)
|
52
|
+
else
|
53
|
+
assert_equal(
|
54
|
+
"Array BasicObject Enumerable Fixnum Float Foo Hash IO Integer Kernel Module Mutex Numeric Object Rational String Symbol Thread Time",
|
55
|
+
StackTracy.send(:mod_names, [:core, "Foo"])
|
56
|
+
)
|
57
|
+
end
|
43
58
|
|
44
59
|
assert_equal(
|
45
60
|
"ActiveRecord::Base",
|
@@ -59,7 +74,7 @@ module Unit
|
|
59
74
|
file, line = __FILE__, __LINE__ - 2
|
60
75
|
st = File.expand_path("../../../lib/stack_tracy.rb", __FILE__)
|
61
76
|
|
62
|
-
assert_equal [
|
77
|
+
assert_equal correct([
|
63
78
|
{:event => "c-call" , :file => file, :line => line, :singleton => false, :object => Kernel , :method => "puts" , :call => "Kernel#puts" },
|
64
79
|
{:event => "c-call" , :file => file, :line => line, :singleton => false, :object => IO , :method => "puts" , :call => "IO#puts" },
|
65
80
|
{:event => "c-call" , :file => file, :line => line, :singleton => false, :object => IO , :method => "write", :call => "IO#write" },
|
@@ -70,7 +85,7 @@ module Unit
|
|
70
85
|
{:event => "c-return", :file => file, :line => line, :singleton => false, :object => Kernel , :method => "puts" , :call => "Kernel#puts" },
|
71
86
|
{:event => "call" , :file => st , :line => 35 , :singleton => false, :object => StackTracy, :method => "stop" , :call => "StackTracy#stop" },
|
72
87
|
{:event => "c-call" , :file => st , :line => 36 , :singleton => 0 , :object => StackTracy, :method => "_stop", :call => "StackTracy._stop"}
|
73
|
-
], StackTracy.stack_trace.collect{ |event_info|
|
88
|
+
]), StackTracy.stack_trace.collect{ |event_info|
|
74
89
|
event_info.to_hash.tap do |hash|
|
75
90
|
assert hash.delete(:nsec)
|
76
91
|
hash.delete(:time)
|
@@ -116,12 +131,12 @@ module Unit
|
|
116
131
|
end
|
117
132
|
file, line = __FILE__, __LINE__ - 2
|
118
133
|
|
119
|
-
assert_equal [
|
134
|
+
assert_equal correct([
|
120
135
|
{:event => "c-call" , :file => file, :line => line, :singleton => false, :object => Kernel, :method => "puts" , :call => "Kernel#puts", :depth => 0},
|
121
136
|
{:event => "c-call" , :file => file, :line => line, :singleton => false, :object => IO , :method => "puts" , :call => "IO#puts" , :depth => 1},
|
122
137
|
{:event => "c-call" , :file => file, :line => line, :singleton => false, :object => IO , :method => "write", :call => "IO#write" , :depth => 2},
|
123
138
|
{:event => "c-call" , :file => file, :line => line, :singleton => false, :object => IO , :method => "write", :call => "IO#write" , :depth => 2}
|
124
|
-
], StackTracy.select.collect{ |event_info|
|
139
|
+
]), StackTracy.select.collect{ |event_info|
|
125
140
|
event_info.to_hash.tap do |hash|
|
126
141
|
assert hash.delete(:nsec)
|
127
142
|
assert hash.delete(:duration)
|
@@ -213,12 +228,12 @@ module Unit
|
|
213
228
|
end
|
214
229
|
file, line = __FILE__, __LINE__ - 2
|
215
230
|
|
216
|
-
assert_equal [
|
231
|
+
assert_equal correct([
|
217
232
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => Kernel, :method => "puts" , :call => "Kernel#puts", :depth => 0},
|
218
233
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO , :method => "puts" , :call => "IO#puts" , :depth => 1},
|
219
234
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO , :method => "write", :call => "IO#write" , :depth => 2},
|
220
235
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO , :method => "write", :call => "IO#write" , :depth => 2}
|
221
|
-
], StackTracy.select("*").collect{ |event_info|
|
236
|
+
]), StackTracy.select("*").collect{ |event_info|
|
222
237
|
event_info.to_hash.tap do |hash|
|
223
238
|
assert hash.delete(:nsec)
|
224
239
|
assert hash.delete(:duration)
|
@@ -236,11 +251,11 @@ module Unit
|
|
236
251
|
end
|
237
252
|
}
|
238
253
|
|
239
|
-
assert_equal [
|
254
|
+
assert_equal correct([
|
240
255
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "puts" , :call => "IO#puts" , :depth => 0},
|
241
256
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "write", :call => "IO#write", :depth => 1},
|
242
257
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "write", :call => "IO#write", :depth => 1}
|
243
|
-
], StackTracy.select("IO").collect{ |event_info|
|
258
|
+
]), StackTracy.select("IO").collect{ |event_info|
|
244
259
|
event_info.to_hash.tap do |hash|
|
245
260
|
assert hash.delete(:nsec)
|
246
261
|
assert hash.delete(:duration)
|
@@ -248,11 +263,11 @@ module Unit
|
|
248
263
|
end
|
249
264
|
}
|
250
265
|
|
251
|
-
assert_equal [
|
266
|
+
assert_equal correct([
|
252
267
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "puts" , :call => "IO#puts" , :depth => 0},
|
253
268
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "write", :call => "IO#write", :depth => 1},
|
254
269
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "write", :call => "IO#write", :depth => 1}
|
255
|
-
], StackTracy.select("IO*").collect{ |event_info|
|
270
|
+
]), StackTracy.select("IO*").collect{ |event_info|
|
256
271
|
event_info.to_hash.tap do |hash|
|
257
272
|
assert hash.delete(:nsec)
|
258
273
|
assert hash.delete(:duration)
|
@@ -265,11 +280,11 @@ module Unit
|
|
265
280
|
event_info.to_hash
|
266
281
|
}
|
267
282
|
|
268
|
-
assert_equal [
|
283
|
+
assert_equal correct([
|
269
284
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "puts" , :call => "IO#puts" , :depth => 0},
|
270
285
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "write", :call => "IO#write", :depth => 1},
|
271
286
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO, :method => "write", :call => "IO#write", :depth => 1}
|
272
|
-
], StackTracy.select("IO#").collect{ |event_info|
|
287
|
+
]), StackTracy.select("IO#").collect{ |event_info|
|
273
288
|
event_info.to_hash.tap do |hash|
|
274
289
|
assert hash.delete(:nsec)
|
275
290
|
assert hash.delete(:duration)
|
@@ -299,10 +314,10 @@ module Unit
|
|
299
314
|
end
|
300
315
|
}
|
301
316
|
|
302
|
-
assert_equal [
|
317
|
+
assert_equal correct([
|
303
318
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => Kernel, :method => "puts", :call => "Kernel#puts", :depth => 0},
|
304
319
|
{:event => "c-call", :file => file, :line => line, :singleton => false, :object => IO , :method => "puts", :call => "IO#puts" , :depth => 1}
|
305
|
-
], StackTracy.select("*#puts").collect{ |event_info|
|
320
|
+
]), StackTracy.select("*#puts").collect{ |event_info|
|
306
321
|
event_info.to_hash.tap do |hash|
|
307
322
|
assert hash.delete(:nsec)
|
308
323
|
assert hash.delete(:duration)
|
data/ui/assets/stack_tracy.js
CHANGED
@@ -22,7 +22,7 @@ StackTracy = (function() {
|
|
22
22
|
});
|
23
23
|
|
24
24
|
return {
|
25
|
-
version: "0.1.
|
25
|
+
version: "0.1.9",
|
26
26
|
sort: function(section, column) {
|
27
27
|
sortation[section][column] = sortation[section][column] == "asc" ? "desc" : "asc";
|
28
28
|
$("#" + section + ">.body>div").tsort("span:eq(" + column + ")[abbr]", {
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: stack_tracy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Paul Engel
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-09-16 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rich_support
|
@@ -45,6 +45,17 @@ dependencies:
|
|
45
45
|
version: "0"
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: fastercsv
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
type: :runtime
|
58
|
+
version_requirements: *id004
|
48
59
|
description: Investigate and detect slow methods within the stack trace of your Ruby (optionally Sinatra) application
|
49
60
|
email:
|
50
61
|
- paul.engel@holder.nl
|
@@ -56,6 +67,7 @@ extra_rdoc_files: []
|
|
56
67
|
|
57
68
|
files:
|
58
69
|
- .gitignore
|
70
|
+
- .travis.yml
|
59
71
|
- CHANGELOG.rdoc
|
60
72
|
- Gemfile
|
61
73
|
- MIT-LICENSE
|