Backtrace_Array 0.1.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/.gitignore +8 -0
- data/Backtrace_Array.gemspec +31 -0
- data/Gemfile +6 -0
- data/README.md +73 -0
- data/Rakefile +3 -0
- data/lib/Backtrace_Array.rb +29 -0
- data/lib/Backtrace_Array/version.rb +1 -0
- data/spec/Backtrace_Array.rb +86 -0
- data/spec/bin.rb +13 -0
- data/spec/file/thin_A.log +16 -0
- data/spec/file/thin_B.log +16 -0
- data/spec/lib/main.rb +45 -0
- metadata +138 -0
data/.gitignore
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
$:.push File.expand_path("../lib", __FILE__)
|
4
|
+
require "Backtrace_Array/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "Backtrace_Array"
|
8
|
+
s.version = Backtrace_Array_Version
|
9
|
+
s.authors = ["da99"]
|
10
|
+
s.email = ["i-hate-spam-45671204@mailinator.com"]
|
11
|
+
s.homepage = "https://github.com/da99/Backtrace_Array"
|
12
|
+
s.summary = %q{
|
13
|
+
Turn backtrace String or Array into a specially made Array for your views.
|
14
|
+
}
|
15
|
+
s.description = %q{
|
16
|
+
Check the homepage because I can't describe it probably here.
|
17
|
+
}
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
+
s.require_paths = ["lib"]
|
23
|
+
|
24
|
+
s.add_development_dependency 'bacon'
|
25
|
+
s.add_development_dependency 'rake'
|
26
|
+
s.add_development_dependency 'Bacon_Colored'
|
27
|
+
s.add_development_dependency 'pry'
|
28
|
+
|
29
|
+
# Specify any dependencies here; for example:
|
30
|
+
s.add_runtime_dependency 'Split_Lines'
|
31
|
+
end
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
|
2
|
+
Backtrace\_Array
|
3
|
+
================
|
4
|
+
|
5
|
+
A Ruby gem to alter structure of a backtrace:
|
6
|
+
|
7
|
+
Original Backtrace:
|
8
|
+
|
9
|
+
[ String, String, String ]
|
10
|
+
|
11
|
+
New Array:
|
12
|
+
|
13
|
+
[
|
14
|
+
[ unique file 1, [ [line, code], [line, code], ... ] ]
|
15
|
+
[ unique file 2, [ [line, code], [line, code], ... ] ]
|
16
|
+
[ unique file 3, [ [line, code], [line, code], ... ] ]
|
17
|
+
|
18
|
+
]
|
19
|
+
|
20
|
+
This lets you present it in your views as:
|
21
|
+
|
22
|
+
<p>
|
23
|
+
<pre>
|
24
|
+
<b style="color: purple;">unique file 1</b>
|
25
|
+
<b>line</b>: code
|
26
|
+
<b>line</b>: code
|
27
|
+
<b>line</b>: code
|
28
|
+
|
29
|
+
<b style="color: purple;">unique file 2</b>
|
30
|
+
<b>line</b>: code
|
31
|
+
<b>line</b>: code
|
32
|
+
<b>line</b>: code
|
33
|
+
</pre>
|
34
|
+
</p>
|
35
|
+
|
36
|
+
Installation
|
37
|
+
------------
|
38
|
+
|
39
|
+
gem install Backtrace_Array
|
40
|
+
|
41
|
+
Usage
|
42
|
+
------
|
43
|
+
|
44
|
+
require "Backtrace_Array"
|
45
|
+
|
46
|
+
begin
|
47
|
+
raise
|
48
|
+
rescue Object => e
|
49
|
+
Backtrace_Array $?.backtrace
|
50
|
+
end
|
51
|
+
|
52
|
+
# or ...
|
53
|
+
Backtrace_Array %~
|
54
|
+
file1:1: in `new'
|
55
|
+
file2:2: in `<main>'
|
56
|
+
file3:3: in `eval'
|
57
|
+
~
|
58
|
+
|
59
|
+
|
60
|
+
Run Tests
|
61
|
+
---------
|
62
|
+
|
63
|
+
git clone git@github.com:da99/Backtrace_Array.git
|
64
|
+
cd Backtrace_Array
|
65
|
+
bundle update
|
66
|
+
bundle exec bacon spec/lib/main.rb
|
67
|
+
|
68
|
+
"I hate writing."
|
69
|
+
-----------------------------
|
70
|
+
|
71
|
+
If you know of existing software that makes the above redundant,
|
72
|
+
please tell me. The last thing I want to do is maintain code.
|
73
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'Backtrace_Array/version'
|
2
|
+
require 'Split_Lines'
|
3
|
+
def Backtrace_Array str_or_array
|
4
|
+
arr = if str_or_array.is_a?(Enumerable)
|
5
|
+
str_or_array
|
6
|
+
else
|
7
|
+
Split_Lines str_or_array
|
8
|
+
end
|
9
|
+
|
10
|
+
last_file = nil
|
11
|
+
final = []
|
12
|
+
arr.each { |l|
|
13
|
+
pieces = l.split( %r!:(\d+):! )
|
14
|
+
file = pieces.shift
|
15
|
+
num = pieces.shift
|
16
|
+
(num = Integer num) if num
|
17
|
+
code = pieces.join(':') unless pieces.empty?
|
18
|
+
|
19
|
+
if last_file != file
|
20
|
+
final << [ file, [] ]
|
21
|
+
last_file = file
|
22
|
+
end
|
23
|
+
|
24
|
+
content_arr = [num, code].compact
|
25
|
+
(final.last.last << content_arr) unless content_arr.empty?
|
26
|
+
}
|
27
|
+
|
28
|
+
final
|
29
|
+
end # === def Backtrace_Array
|
@@ -0,0 +1 @@
|
|
1
|
+
Backtrace_Array_Version = "0.1.0"
|
@@ -0,0 +1,86 @@
|
|
1
|
+
|
2
|
+
describe "Backtrace_Array string" do
|
3
|
+
|
4
|
+
before {
|
5
|
+
@arr = Backtrace_Array(%~
|
6
|
+
file1:1:in >main
|
7
|
+
file1:2:in >main
|
8
|
+
file2:3:in >main
|
9
|
+
file2:4:in >main
|
10
|
+
~)
|
11
|
+
}
|
12
|
+
|
13
|
+
it "returns an Array of 2 element Arrays" do
|
14
|
+
@arr.map(&:size)
|
15
|
+
.should == [2, 2]
|
16
|
+
end
|
17
|
+
|
18
|
+
it "sets the first element equal to filename" do
|
19
|
+
@arr.map(&:first)
|
20
|
+
.should == %w{ file1 file2 }
|
21
|
+
end
|
22
|
+
|
23
|
+
it "sets the second element to a 2 element line/code pair" do
|
24
|
+
@arr.map(&:last)
|
25
|
+
.should == [
|
26
|
+
[[1, 'in >main'], [2, 'in >main']],
|
27
|
+
[[3, 'in >main'], [4, 'in >main']]
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
end # === Backtrace_Array string
|
32
|
+
|
33
|
+
describe "Backtrace_Array array" do
|
34
|
+
|
35
|
+
before {
|
36
|
+
@arr = Backtrace_Array(Split_Lines %~
|
37
|
+
file1:1:in >main
|
38
|
+
file1:2:in >main
|
39
|
+
file2:3:in >main
|
40
|
+
file2:4:in >main
|
41
|
+
~)
|
42
|
+
}
|
43
|
+
|
44
|
+
it "returns an Array of 2 element Arrays" do
|
45
|
+
@arr.map(&:size)
|
46
|
+
.should == [2, 2]
|
47
|
+
end
|
48
|
+
|
49
|
+
it "sets the first element equal to filename" do
|
50
|
+
@arr.map(&:first)
|
51
|
+
.should == %w{ file1 file2 }
|
52
|
+
end
|
53
|
+
|
54
|
+
it "sets the second element to a 2 element line/code pair" do
|
55
|
+
@arr.map(&:last)
|
56
|
+
.should == [
|
57
|
+
[[1, 'in >main'], [2, 'in >main']],
|
58
|
+
[[3, 'in >main'], [4, 'in >main']]
|
59
|
+
]
|
60
|
+
end
|
61
|
+
|
62
|
+
end # === Backtrace_Array array
|
63
|
+
|
64
|
+
|
65
|
+
describe "Backtrace_Array non-backtrace lines" do
|
66
|
+
|
67
|
+
it "treats line as a file with no other content" do
|
68
|
+
Backtrace_Array(File.read('spec/file/thin_A.log'))
|
69
|
+
.last
|
70
|
+
.should == [ ">> Using rack adapter", [] ]
|
71
|
+
end
|
72
|
+
|
73
|
+
it "uses the first :\d+: as the line number, ignoring all others" do
|
74
|
+
Backtrace_Array(%~
|
75
|
+
file1:1:in:1:a
|
76
|
+
file2:2:in:2:a
|
77
|
+
~)
|
78
|
+
.should == [
|
79
|
+
['file1', [ [1, "in:1:a"] ] ],
|
80
|
+
['file2', [ [2, "in:2:a"] ] ]
|
81
|
+
]
|
82
|
+
end
|
83
|
+
|
84
|
+
end # === Backtrace_Array non-standard lines
|
85
|
+
|
86
|
+
|
data/spec/bin.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
bins = Dir.glob("bin/*")
|
3
|
+
|
4
|
+
unless bins.empty?
|
5
|
+
describe "permissions of bin/" do
|
6
|
+
bins.each { |file|
|
7
|
+
it "should chmod 755 for: #{file}" do
|
8
|
+
`stat -c %a #{file}`.strip
|
9
|
+
.should.be == "755"
|
10
|
+
end
|
11
|
+
}
|
12
|
+
end # === permissions of bin/
|
13
|
+
end # === unless bins.empty?
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/home/da01/MyLife/apps/GEMS/Exceptional_Log/spec/file/config.ru:1:in `block in <main>': uninitialized constant A (NameError)
|
2
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
|
3
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
|
4
|
+
from /home/da01/MyLife/apps/GEMS/Exceptional_Log/spec/file/config.ru:1:in `new'
|
5
|
+
from /home/da01/MyLife/apps/GEMS/Exceptional_Log/spec/file/config.ru:1:in `<main>'
|
6
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/rack/adapter/loader.rb:36:in `eval'
|
7
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/rack/adapter/loader.rb:36:in `load'
|
8
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/rack/adapter/loader.rb:45:in `for'
|
9
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/controllers/controller.rb:169:in `load_adapter'
|
10
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/controllers/controller.rb:73:in `start'
|
11
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/runner.rb:185:in `run_command'
|
12
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/runner.rb:151:in `run!'
|
13
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/bin/thin:6:in `<top (required)>'
|
14
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/bin/thin:23:in `load'
|
15
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/bin/thin:23:in `<main>'
|
16
|
+
>> Using rack adapter
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/home/da01/MyLife/apps/GEMS/Exceptional_Log/spec/file/config.ru:1:in `block in <main>': uninitialized constant B (NameError)
|
2
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
|
3
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
|
4
|
+
from /home/da01/MyLife/apps/GEMS/Exceptional_Log/spec/file/config.ru:1:in `new'
|
5
|
+
from /home/da01/MyLife/apps/GEMS/Exceptional_Log/spec/file/config.ru:1:in `<main>'
|
6
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/rack/adapter/loader.rb:36:in `eval'
|
7
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/rack/adapter/loader.rb:36:in `load'
|
8
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/rack/adapter/loader.rb:45:in `for'
|
9
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/controllers/controller.rb:169:in `load_adapter'
|
10
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/controllers/controller.rb:73:in `start'
|
11
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/runner.rb:185:in `run_command'
|
12
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/runner.rb:151:in `run!'
|
13
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/bin/thin:6:in `<top (required)>'
|
14
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/bin/thin:23:in `load'
|
15
|
+
from /home/da01/.rbenv/versions/1.9.3-p194/bin/thin:23:in `<main>'
|
16
|
+
>> Using rack adapter
|
data/spec/lib/main.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler'
|
4
|
+
begin
|
5
|
+
Bundler.setup(:default, :development)
|
6
|
+
rescue Bundler::BundlerError => e
|
7
|
+
$stderr.print e.message, "\n"
|
8
|
+
$stderr.print "Run `bundle install` to install missing gems\n"
|
9
|
+
exit e.status_code
|
10
|
+
end
|
11
|
+
require 'bacon'
|
12
|
+
|
13
|
+
Gem_Dir = File.expand_path( File.join(File.dirname(__FILE__) + '/../..') )
|
14
|
+
$LOAD_PATH.unshift Gem_Dir
|
15
|
+
$LOAD_PATH.unshift( Gem_Dir + "/lib" )
|
16
|
+
|
17
|
+
Bacon.summary_on_exit
|
18
|
+
|
19
|
+
require 'Backtrace_Array'
|
20
|
+
require 'Bacon_Colored'
|
21
|
+
require 'pry'
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
# ======== Custom code.
|
26
|
+
|
27
|
+
# Nothing yet.
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
# ======== Include the tests.
|
33
|
+
target_files = ARGV[1, ARGV.size - 1].select { |a| File.file?(a) }
|
34
|
+
|
35
|
+
if target_files.empty?
|
36
|
+
|
37
|
+
# include all files
|
38
|
+
Dir.glob('./spec/*.rb').each { |file|
|
39
|
+
require file.sub('.rb', '') if File.file?(file)
|
40
|
+
}
|
41
|
+
|
42
|
+
else
|
43
|
+
# Do nothing. Bacon grabs the file.
|
44
|
+
|
45
|
+
end
|
metadata
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: Backtrace_Array
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- da99
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-05-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bacon
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: Bacon_Colored
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: pry
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: Split_Lines
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
description: ! "\n Check the homepage because I can't describe it probably here.\n
|
95
|
+
\ "
|
96
|
+
email:
|
97
|
+
- i-hate-spam-45671204@mailinator.com
|
98
|
+
executables: []
|
99
|
+
extensions: []
|
100
|
+
extra_rdoc_files: []
|
101
|
+
files:
|
102
|
+
- .gitignore
|
103
|
+
- Backtrace_Array.gemspec
|
104
|
+
- Gemfile
|
105
|
+
- README.md
|
106
|
+
- Rakefile
|
107
|
+
- lib/Backtrace_Array.rb
|
108
|
+
- lib/Backtrace_Array/version.rb
|
109
|
+
- spec/Backtrace_Array.rb
|
110
|
+
- spec/bin.rb
|
111
|
+
- spec/file/thin_A.log
|
112
|
+
- spec/file/thin_B.log
|
113
|
+
- spec/lib/main.rb
|
114
|
+
homepage: https://github.com/da99/Backtrace_Array
|
115
|
+
licenses: []
|
116
|
+
post_install_message:
|
117
|
+
rdoc_options: []
|
118
|
+
require_paths:
|
119
|
+
- lib
|
120
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
requirements: []
|
133
|
+
rubyforge_project:
|
134
|
+
rubygems_version: 1.8.23
|
135
|
+
signing_key:
|
136
|
+
specification_version: 3
|
137
|
+
summary: Turn backtrace String or Array into a specially made Array for your views.
|
138
|
+
test_files: []
|