code_buddy 0.0.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.
- data/.gitignore +4 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +44 -0
- data/LICENSE +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +10 -0
- data/bin/code_buddy +5 -0
- data/code_buddy.gemspec +31 -0
- data/lib/code_buddy.rb +12 -0
- data/lib/code_buddy/app.rb +50 -0
- data/lib/code_buddy/middleware.rb +45 -0
- data/lib/code_buddy/public/images/buddy.jpeg +0 -0
- data/lib/code_buddy/public/javascripts/backbone.js +966 -0
- data/lib/code_buddy/public/javascripts/code_buddy.js +130 -0
- data/lib/code_buddy/public/javascripts/jquery.js +7179 -0
- data/lib/code_buddy/public/javascripts/underscore.js +722 -0
- data/lib/code_buddy/public/stylesheets/code_buddy.css +106 -0
- data/lib/code_buddy/public/stylesheets/coderay.css +102 -0
- data/lib/code_buddy/stack.rb +19 -0
- data/lib/code_buddy/stack_frame.rb +43 -0
- data/lib/code_buddy/templates/rescues/_request_and_response.erb +31 -0
- data/lib/code_buddy/templates/rescues/_trace.erb +26 -0
- data/lib/code_buddy/templates/rescues/diagnostics.erb +10 -0
- data/lib/code_buddy/templates/rescues/layout.erb +29 -0
- data/lib/code_buddy/templates/rescues/missing_template.erb +2 -0
- data/lib/code_buddy/templates/rescues/routing_error.erb +10 -0
- data/lib/code_buddy/templates/rescues/template_error.erb +21 -0
- data/lib/code_buddy/templates/rescues/unknown_action.erb +2 -0
- data/lib/code_buddy/version.rb +3 -0
- data/lib/code_buddy/views/banner.erb +6 -0
- data/lib/code_buddy/views/form.erb +13 -0
- data/lib/code_buddy/views/header.erb +8 -0
- data/lib/code_buddy/views/index.erb +25 -0
- data/lib/code_buddy/views/orig.erb +53 -0
- data/spec/app_spec.rb +6 -0
- data/spec/middleware_spec.rb +37 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/stack_frame_spec.rb +105 -0
- data/spec/stack_spec.rb +26 -0
- metadata +203 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
<%= erb :header %>
|
2
|
+
<html>
|
3
|
+
<body>
|
4
|
+
<%= erb :banner %>
|
5
|
+
<br/>
|
6
|
+
<div id="legend">
|
7
|
+
commands:<br/>
|
8
|
+
↑ move up the stack<br/>
|
9
|
+
↓ move down the stack<br/>
|
10
|
+
click to select a stack frame<br/>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<ul id="stack"></ul>
|
14
|
+
<div id='code'></div>
|
15
|
+
<script src="javascripts/code_buddy.js" type="text/javascript"></script>
|
16
|
+
<script>
|
17
|
+
var stack = new Stack(<%= @stack.to_json %>);
|
18
|
+
var stackView = new StackView({model: stack});
|
19
|
+
stackView.render();
|
20
|
+
$(document).keydown(function(event) {
|
21
|
+
return stack.view.changeSelectionOnArrow(event)
|
22
|
+
})
|
23
|
+
</script>
|
24
|
+
</body>
|
25
|
+
</html>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Code Buddy</title>
|
4
|
+
<link href="stylesheets/code_buddy.css" media="screen" rel="stylesheet" type="text/css" />
|
5
|
+
<link href="stylesheets/coderay.css" media="screen" rel="stylesheet" type="text/css" />
|
6
|
+
<script src="javascripts/jquery.js" type="text/javascript"></script>
|
7
|
+
<script src="javascripts/underscore.js" type="text/javascript"></script>
|
8
|
+
<script src="javascripts/backbone.js" type="text/javascript"></script>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<img src="images/buddy.jpeg"/>
|
12
|
+
<div class="banner">
|
13
|
+
<h1>CodeBuddy</h1>
|
14
|
+
<h2>a friendly place to see your code</h2>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="legend">
|
18
|
+
<div>↑ move up the stack</div>
|
19
|
+
<div>↓ move down the stack</div>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="code_buddy">
|
25
|
+
<ul id="stack"></ul>
|
26
|
+
<div id='code'></div>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<script src="javascripts/code_buddy.js" type="text/javascript"></script>
|
30
|
+
<script>
|
31
|
+
|
32
|
+
var stack = new Stack(<%= @stack.to_json %>);
|
33
|
+
|
34
|
+
var stackView = new StackView({model: stack});
|
35
|
+
stackView.render();
|
36
|
+
|
37
|
+
// Why don't backbone events work???
|
38
|
+
$(document).keydown(function(event) {
|
39
|
+
var ret = stack.view.changeSelectionOnArrow(event)
|
40
|
+
var offset = $(stack.selectedAddress().view.el).offset().top
|
41
|
+
var windowHeight = $(window).height()
|
42
|
+
if (offset > windowHeight + $(window).scrollTop()) {
|
43
|
+
$('html,body').animate({scrollTop: offset - 200}, 500);
|
44
|
+
} else if (offset < $(window).scrollTop()) {
|
45
|
+
$('html,body').animate({scrollTop: offset - 500}, 500);
|
46
|
+
}
|
47
|
+
return ret;
|
48
|
+
})
|
49
|
+
|
50
|
+
|
51
|
+
</script>
|
52
|
+
</body>
|
53
|
+
</html>
|
data/spec/app_spec.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe CodeBuddy::ShowExceptions do
|
4
|
+
subject { CodeBuddy::ShowExceptions.new }
|
5
|
+
|
6
|
+
describe 'Non code_buddy URLs' do
|
7
|
+
it 'should not call the Sinatra app when a non code_buddy URL is found' do
|
8
|
+
CodeBuddy::App.expects(:new).never
|
9
|
+
env = { 'PATH_INFO' => '/some_other_path' }
|
10
|
+
subject.call(env)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should not call the Sinatra app when code_buddy is found later in the URL' do
|
14
|
+
CodeBuddy::App.expects(:new).never
|
15
|
+
env = { 'PATH_INFO' => '/some_other_path/code_buddy' }
|
16
|
+
subject.call(env)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'code_buddy URLs' do
|
21
|
+
it 'should call the Sinatra app when a code_buddy URL is found and pass in the remaining path only' do
|
22
|
+
app = mock
|
23
|
+
CodeBuddy::App.expects(:new).returns(app)
|
24
|
+
app.expects(:call).with({ 'PATH_INFO' => '/12' })
|
25
|
+
env = { 'PATH_INFO' => '/code_buddy/12' }
|
26
|
+
subject.call(env)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should call the Sinatra app when a code_buddy URL is found and pass in the remaining path only' do
|
30
|
+
app = mock
|
31
|
+
CodeBuddy::App.expects(:new).returns(app)
|
32
|
+
app.expects(:call).with({ 'PATH_INFO' => '' })
|
33
|
+
env = { 'PATH_INFO' => '/code_buddy' }
|
34
|
+
subject.call(env)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'rspec'
|
4
|
+
require 'mocha'
|
5
|
+
require 'sinatra'
|
6
|
+
|
7
|
+
module Rails
|
8
|
+
class Railtie
|
9
|
+
def self.initializer(name); end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
module ActionDispatch
|
13
|
+
class ShowExceptions
|
14
|
+
def call(env); end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'code_buddy'
|
19
|
+
|
20
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
21
|
+
# in spec/support/ and its subdirectories.
|
22
|
+
Dir[File.join(File.dirname(__FILE__), "spec/support/**/*.rb")].each {|f| require f}
|
23
|
+
|
24
|
+
RSpec.configure do |config|
|
25
|
+
config.mock_with :mocha
|
26
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe CodeBuddy::StackFrame do
|
4
|
+
subject { CodeBuddy::StackFrame.new("/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:3:in `new'") }
|
5
|
+
|
6
|
+
describe 'initialization' do
|
7
|
+
before do
|
8
|
+
CodeBuddy::StackFrame.any_instance.expects(:code).returns('def some_code_here end')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should have the file path' do
|
12
|
+
subject.path.should == '/gems/actionpack-3.0.3/lib/abstract_controller/base.rb'
|
13
|
+
end
|
14
|
+
it 'should have the line number' do
|
15
|
+
subject.line.should == 3
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'formatting code from the source file' do
|
20
|
+
describe 'with a valid file' do
|
21
|
+
let(:source_code) { [
|
22
|
+
"require 'active_support/configurable'\n",
|
23
|
+
"require 'active_support/descendants_tracker'\n",
|
24
|
+
"require 'active_support/core_ext/module/anonymous'\n",
|
25
|
+
"\n",
|
26
|
+
"module AbstractController\n",
|
27
|
+
" class Error < StandardError; end\n",
|
28
|
+
" class ActionNotFound < StandardError; end\n",
|
29
|
+
"\n",
|
30
|
+
" # <tt>AbstractController::Base</tt> is a low-level API. Nobody should be\n",
|
31
|
+
" # using it directly, and subclasses (like ActionController::Base) are\n",
|
32
|
+
" # expected to provide their own +render+ method, since rendering means\n",
|
33
|
+
" # different things depending on the context. \n",
|
34
|
+
" class Base\n",
|
35
|
+
" attr_internal :response_body\n",
|
36
|
+
" attr_internal :action_name\n",
|
37
|
+
" attr_internal :formats\n",
|
38
|
+
"\n",
|
39
|
+
" include ActiveSupport::Configurable\n",
|
40
|
+
" extend ActiveSupport::DescendantsTracker\n",
|
41
|
+
"\n",
|
42
|
+
" class << self\n",
|
43
|
+
" attr_reader :abstract\n",
|
44
|
+
" alias_method :abstract?, :abstract\n",
|
45
|
+
"\n",
|
46
|
+
" # Define a controller as abstract. See internal_methods for more\n",
|
47
|
+
" # details.\n",
|
48
|
+
" def abstract!\n",
|
49
|
+
" @abstract = true\n",
|
50
|
+
" end\n",
|
51
|
+
"\n",
|
52
|
+
" # A list of all internal methods for a controller. This finds the first\n",
|
53
|
+
" # abstract superclass of a controller, and gets a list of all public\n",
|
54
|
+
" # instance methods on that abstract class. Public instance methods of\n"
|
55
|
+
] }
|
56
|
+
|
57
|
+
before do
|
58
|
+
File.expects(:new).with('/gems/actionpack-3.0.3/lib/abstract_controller/base.rb').
|
59
|
+
returns(mock(:readlines=>source_code))
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should read code from the middle of a file' do
|
63
|
+
CodeRay.expects(:scan).with(source_code[4..25], :ruby).returns(parsed_code=mock)
|
64
|
+
parsed_code.expects(:html).
|
65
|
+
with(:line_number_start => 5, :line_numbers => :inline, :wrap => :span, :bold_every=>false).
|
66
|
+
returns(formatted_source=mock)
|
67
|
+
|
68
|
+
formatted_source.expects(:split).with("\n").returns((5..25).to_a)
|
69
|
+
|
70
|
+
stack_frame = CodeBuddy::StackFrame.new("/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:15:in `new'")
|
71
|
+
stack_frame.code.should == "5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n<span class='container selected'>15<span class='overlay'></span></span>\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25"
|
72
|
+
end
|
73
|
+
it 'should read code from the top of a file' do
|
74
|
+
CodeRay.expects(:scan).with(source_code[0..13], :ruby).returns(parsed_code=mock)
|
75
|
+
parsed_code.expects(:html).
|
76
|
+
with(:line_number_start => 1, :line_numbers => :inline, :wrap => :span, :bold_every=>false).
|
77
|
+
returns(formatted_source=mock)
|
78
|
+
formatted_source.expects(:split).with("\n").returns((1..13).to_a)
|
79
|
+
|
80
|
+
stack_frame = CodeBuddy::StackFrame.new("/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:3:in `new'")
|
81
|
+
|
82
|
+
stack_frame.code.should == "1\n2\n<span class='container selected'>3<span class='overlay'></span></span>\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13"
|
83
|
+
end
|
84
|
+
it 'should read code from the bottom of a file' do
|
85
|
+
CodeRay.expects(:scan).with(source_code[19..32], :ruby).returns(parsed_code=mock)
|
86
|
+
parsed_code.expects(:html).
|
87
|
+
with(:line_number_start => 20, :line_numbers => :inline, :wrap => :span, :bold_every=>false).
|
88
|
+
returns(formatted_source=mock)
|
89
|
+
formatted_source.expects(:split).with("\n").returns((20..33).to_a)
|
90
|
+
|
91
|
+
stack_frame = CodeBuddy::StackFrame.new("/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:30:in `new'")
|
92
|
+
|
93
|
+
stack_frame.code.should == "20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n<span class='container selected'>30<span class='overlay'></span></span>\n31\n32\n33"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should return an error message in the code when unable to read the source file' do
|
98
|
+
File.expects(:new).with('/no/such/file.rb').
|
99
|
+
raises(Errno::ENOENT.new('/no/such/file.rb'))
|
100
|
+
|
101
|
+
stack_frame = CodeBuddy::StackFrame.new('/no/such/file.rb')
|
102
|
+
stack_frame.code.should == "<span class=\"coderay\">Unable to read file:\n \"/no/such/file.rb\"</span>"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
data/spec/stack_spec.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe CodeBuddy::Stack do
|
4
|
+
|
5
|
+
it 'should create a series of stack frames from an exception' do
|
6
|
+
backtrace = [
|
7
|
+
"/Users/me/my_app/config.ru:1:in `new'",
|
8
|
+
"/Users/me/my_app/config.ru:1"
|
9
|
+
]
|
10
|
+
CodeBuddy::StackFrame.expects(:new).with("/Users/me/my_app/config.ru:1:in `new'").returns(frame1=mock)
|
11
|
+
CodeBuddy::StackFrame.expects(:new).with("/Users/me/my_app/config.ru:1" ).returns(frame2=mock)
|
12
|
+
mock_exception = mock(:backtrace=>backtrace)
|
13
|
+
mock_exception.expects(:is_a?).with(Exception).returns(true)
|
14
|
+
stack = CodeBuddy::Stack.new mock_exception
|
15
|
+
stack.stack_frames.should == [frame1, frame2]
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should save the currently selected stack frame' do
|
19
|
+
mock_exception = mock(:backtrace=>'')
|
20
|
+
mock_exception.expects(:is_a?).with(Exception).returns(true)
|
21
|
+
stack = CodeBuddy::Stack.new mock_exception
|
22
|
+
stack.selected = 3
|
23
|
+
stack.selected.should == 3
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: code_buddy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Pat Shaughnessy, Alex Rothenberg, Daniel Higginbotham
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-12-09 00:00:00 -05:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rack
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 2
|
30
|
+
- 0
|
31
|
+
version: 1.2.0
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: sinatra
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 1
|
43
|
+
- 1
|
44
|
+
- 0
|
45
|
+
version: 1.1.0
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: json_pure
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 1
|
57
|
+
- 4
|
58
|
+
- 6
|
59
|
+
version: 1.4.6
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: coderay
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
- 9
|
72
|
+
- 6
|
73
|
+
version: 0.9.6
|
74
|
+
type: :runtime
|
75
|
+
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: rake
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
- 8
|
86
|
+
- 7
|
87
|
+
version: 0.8.7
|
88
|
+
type: :development
|
89
|
+
version_requirements: *id005
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: rspec
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ~>
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
segments:
|
98
|
+
- 2
|
99
|
+
- 2
|
100
|
+
- 0
|
101
|
+
version: 2.2.0
|
102
|
+
type: :development
|
103
|
+
version_requirements: *id006
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: mocha
|
106
|
+
prerelease: false
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ~>
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
- 9
|
114
|
+
- 10
|
115
|
+
version: 0.9.10
|
116
|
+
type: :development
|
117
|
+
version_requirements: *id007
|
118
|
+
description: See the Ruby code running in your app.
|
119
|
+
email:
|
120
|
+
- pat@patshaughnessy.net, alex@alexrothenberg.com, daniel@flyingmachinestudios.com
|
121
|
+
executables:
|
122
|
+
- code_buddy
|
123
|
+
extensions: []
|
124
|
+
|
125
|
+
extra_rdoc_files: []
|
126
|
+
|
127
|
+
files:
|
128
|
+
- .gitignore
|
129
|
+
- .rvmrc
|
130
|
+
- Gemfile
|
131
|
+
- Gemfile.lock
|
132
|
+
- LICENSE
|
133
|
+
- README.rdoc
|
134
|
+
- Rakefile
|
135
|
+
- bin/code_buddy
|
136
|
+
- code_buddy.gemspec
|
137
|
+
- lib/code_buddy.rb
|
138
|
+
- lib/code_buddy/app.rb
|
139
|
+
- lib/code_buddy/middleware.rb
|
140
|
+
- lib/code_buddy/public/images/buddy.jpeg
|
141
|
+
- lib/code_buddy/public/javascripts/backbone.js
|
142
|
+
- lib/code_buddy/public/javascripts/code_buddy.js
|
143
|
+
- lib/code_buddy/public/javascripts/jquery.js
|
144
|
+
- lib/code_buddy/public/javascripts/underscore.js
|
145
|
+
- lib/code_buddy/public/stylesheets/code_buddy.css
|
146
|
+
- lib/code_buddy/public/stylesheets/coderay.css
|
147
|
+
- lib/code_buddy/stack.rb
|
148
|
+
- lib/code_buddy/stack_frame.rb
|
149
|
+
- lib/code_buddy/templates/rescues/_request_and_response.erb
|
150
|
+
- lib/code_buddy/templates/rescues/_trace.erb
|
151
|
+
- lib/code_buddy/templates/rescues/diagnostics.erb
|
152
|
+
- lib/code_buddy/templates/rescues/layout.erb
|
153
|
+
- lib/code_buddy/templates/rescues/missing_template.erb
|
154
|
+
- lib/code_buddy/templates/rescues/routing_error.erb
|
155
|
+
- lib/code_buddy/templates/rescues/template_error.erb
|
156
|
+
- lib/code_buddy/templates/rescues/unknown_action.erb
|
157
|
+
- lib/code_buddy/version.rb
|
158
|
+
- lib/code_buddy/views/banner.erb
|
159
|
+
- lib/code_buddy/views/form.erb
|
160
|
+
- lib/code_buddy/views/header.erb
|
161
|
+
- lib/code_buddy/views/index.erb
|
162
|
+
- lib/code_buddy/views/orig.erb
|
163
|
+
- spec/app_spec.rb
|
164
|
+
- spec/middleware_spec.rb
|
165
|
+
- spec/spec_helper.rb
|
166
|
+
- spec/stack_frame_spec.rb
|
167
|
+
- spec/stack_spec.rb
|
168
|
+
has_rdoc: true
|
169
|
+
homepage: http://github.com/patshaughnessy/code_buddy
|
170
|
+
licenses: []
|
171
|
+
|
172
|
+
post_install_message:
|
173
|
+
rdoc_options: []
|
174
|
+
|
175
|
+
require_paths:
|
176
|
+
- lib
|
177
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
segments:
|
182
|
+
- 0
|
183
|
+
version: "0"
|
184
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
segments:
|
189
|
+
- 0
|
190
|
+
version: "0"
|
191
|
+
requirements: []
|
192
|
+
|
193
|
+
rubyforge_project: code_buddy
|
194
|
+
rubygems_version: 1.3.6
|
195
|
+
signing_key:
|
196
|
+
specification_version: 3
|
197
|
+
summary: See the Ruby code running in your app.
|
198
|
+
test_files:
|
199
|
+
- spec/app_spec.rb
|
200
|
+
- spec/middleware_spec.rb
|
201
|
+
- spec/spec_helper.rb
|
202
|
+
- spec/stack_frame_spec.rb
|
203
|
+
- spec/stack_spec.rb
|