code_buddy 0.0.2 → 0.0.3
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/Gemfile.lock +3 -3
- data/code_buddy.gemspec +1 -1
- data/lib/code_buddy/app.rb +12 -5
- data/lib/code_buddy/middleware.rb +10 -41
- data/lib/code_buddy/rails2/monkey_patch_action_controller.rb +19 -0
- data/lib/code_buddy/rails2/templates/rescues/_request_and_response.erb +24 -0
- data/lib/code_buddy/rails2/templates/rescues/_trace.erb +26 -0
- data/lib/code_buddy/rails2/templates/rescues/diagnostics.erb +11 -0
- data/lib/code_buddy/rails2/templates/rescues/layout.erb +29 -0
- data/lib/code_buddy/{templates → rails2/templates}/rescues/missing_template.erb +0 -0
- data/lib/code_buddy/{templates → rails2/templates}/rescues/routing_error.erb +0 -0
- data/lib/code_buddy/rails2/templates/rescues/template_error.erb +21 -0
- data/lib/code_buddy/{templates → rails2/templates}/rescues/unknown_action.erb +0 -0
- data/lib/code_buddy/rails3/railtie.rb +22 -0
- data/lib/code_buddy/{templates → rails3/templates}/rescues/_request_and_response.erb +0 -0
- data/lib/code_buddy/{templates → rails3/templates}/rescues/_trace.erb +1 -1
- data/lib/code_buddy/{templates → rails3/templates}/rescues/diagnostics.erb +0 -0
- data/lib/code_buddy/{templates → rails3/templates}/rescues/layout.erb +0 -0
- data/lib/code_buddy/rails3/templates/rescues/missing_template.erb +2 -0
- data/lib/code_buddy/rails3/templates/rescues/routing_error.erb +10 -0
- data/lib/code_buddy/{templates → rails3/templates}/rescues/template_error.erb +0 -0
- data/lib/code_buddy/rails3/templates/rescues/unknown_action.erb +2 -0
- data/lib/code_buddy/version.rb +1 -1
- data/lib/code_buddy/views/banner.erb +2 -2
- data/lib/code_buddy/views/form.erb +1 -1
- data/lib/code_buddy/views/header.erb +5 -5
- data/lib/code_buddy/views/index.erb +1 -1
- data/lib/code_buddy.rb +14 -1
- data/spec/middleware_spec.rb +13 -8
- data/spec/spec_helper.rb +5 -0
- metadata +23 -35
- data/lib/code_buddy/views/orig.erb +0 -53
data/Gemfile.lock
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
code_buddy (0.0.
|
4
|
+
code_buddy (0.0.3)
|
5
5
|
coderay (~> 0.9.6)
|
6
6
|
json_pure (~> 1.4.6)
|
7
|
-
rack
|
7
|
+
rack
|
8
8
|
sinatra (~> 1.1.0)
|
9
9
|
|
10
10
|
GEM
|
@@ -38,7 +38,7 @@ DEPENDENCIES
|
|
38
38
|
coderay (~> 0.9.6)
|
39
39
|
json_pure (~> 1.4.6)
|
40
40
|
mocha (~> 0.9.10)
|
41
|
-
rack
|
41
|
+
rack
|
42
42
|
rake (~> 0.8.7)
|
43
43
|
rspec (~> 2.2.0)
|
44
44
|
sinatra (~> 1.1.0)
|
data/code_buddy.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_dependency 'rack'
|
22
|
+
s.add_dependency 'rack'
|
23
23
|
s.add_dependency 'sinatra', '~> 1.1.0'
|
24
24
|
s.add_dependency 'json_pure', '~> 1.4.6'
|
25
25
|
s.add_dependency 'coderay', '~> 0.9.6'
|
data/lib/code_buddy/app.rb
CHANGED
@@ -5,9 +5,11 @@ module CodeBuddy
|
|
5
5
|
|
6
6
|
class << self
|
7
7
|
attr_reader :stack
|
8
|
+
attr_reader :rails
|
8
9
|
|
9
10
|
def exception=(exception)
|
10
11
|
@stack = Stack.new(exception)
|
12
|
+
@rails = true
|
11
13
|
end
|
12
14
|
|
13
15
|
def stack_string=(stack_string)
|
@@ -16,23 +18,24 @@ module CodeBuddy
|
|
16
18
|
end
|
17
19
|
|
18
20
|
get '/' do
|
19
|
-
|
21
|
+
redirect "#{rails_prefix}/stack"
|
20
22
|
end
|
21
23
|
|
22
24
|
get '/new' do
|
23
25
|
erb :form
|
24
26
|
end
|
25
27
|
|
26
|
-
post '/' do
|
28
|
+
post '/new' do
|
27
29
|
self.class.stack_string = params[:stack]
|
28
|
-
redirect
|
30
|
+
redirect "#{rails_prefix}/stack"
|
29
31
|
end
|
30
32
|
|
31
33
|
get '/stack' do
|
32
34
|
display_stack(0)
|
33
35
|
end
|
34
36
|
|
35
|
-
get '/:selected' do
|
37
|
+
get '/stack/:selected' do
|
38
|
+
@static_file_prefix = '../'
|
36
39
|
display_stack(params[:selected].to_i)
|
37
40
|
end
|
38
41
|
|
@@ -42,9 +45,13 @@ module CodeBuddy
|
|
42
45
|
@stack.selected = selected_param
|
43
46
|
erb :index
|
44
47
|
else
|
45
|
-
redirect
|
48
|
+
redirect "#{rails_prefix}/new"
|
46
49
|
end
|
47
50
|
end
|
48
51
|
|
52
|
+
def rails_prefix
|
53
|
+
self.class.rails ? '/code_buddy' : ''
|
54
|
+
end
|
55
|
+
|
49
56
|
end
|
50
57
|
end
|
@@ -1,47 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
return false
|
6
|
-
end
|
7
|
-
|
8
|
-
if rails_loaded
|
9
|
-
module CodeBuddy
|
10
|
-
class Railtie < Rails::Railtie
|
11
|
-
initializer "code_buddy.add_middleware" do |app|
|
12
|
-
if app.config.action_dispatch.show_exceptions
|
13
|
-
app.middleware.swap ActionDispatch::ShowExceptions, CodeBuddy::ShowExceptions
|
14
|
-
end
|
15
|
-
end
|
1
|
+
module CodeBuddy
|
2
|
+
class ShowApp
|
3
|
+
def initialize(app)
|
4
|
+
@app = app
|
16
5
|
end
|
17
6
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
env['PATH_INFO'] = $1
|
25
|
-
App.new.call(env)
|
26
|
-
else
|
27
|
-
super
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def rescue_action_locally(request, exception)
|
32
|
-
template = ActionView::Base.new([CODEBUDDY_TEMPLATE_PATH],
|
33
|
-
:request => request,
|
34
|
-
:exception => exception,
|
35
|
-
:application_trace => application_trace(exception),
|
36
|
-
:framework_trace => framework_trace(exception),
|
37
|
-
:full_trace => full_trace(exception)
|
38
|
-
)
|
39
|
-
file = "rescues/#{@@rescue_templates[exception.class.name]}.erb"
|
40
|
-
body = template.render(:file => file, :layout => 'rescues/layout.erb')
|
41
|
-
App.exception = exception
|
42
|
-
render(status_code(exception), body)
|
7
|
+
def call(env)
|
8
|
+
if env['PATH_INFO'] =~ /^\/code_buddy(.*)/
|
9
|
+
env['PATH_INFO'] = $1
|
10
|
+
App.new.call(env)
|
11
|
+
else
|
12
|
+
@app.call(env)
|
43
13
|
end
|
44
|
-
|
45
14
|
end
|
46
15
|
end
|
47
16
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# For Rails 2.3.x we need to monkey patch action controller to alter the exception templates
|
2
|
+
|
3
|
+
module ActionController
|
4
|
+
class Base
|
5
|
+
silence_warnings do
|
6
|
+
ActionController::Base::RESCUES_TEMPLATE_PATH = File.join(File.dirname(__FILE__), 'templates')
|
7
|
+
end
|
8
|
+
def rescue_action_locally(exception)
|
9
|
+
CodeBuddy::App.exception = exception
|
10
|
+
code_buddy_rescue_templates_path = ActionView::Template::EagerPath.new_and_loaded(File.join(File.dirname(__FILE__), "templates"))
|
11
|
+
@template.instance_variable_set("@exception", exception)
|
12
|
+
@template.instance_variable_set("@rescues_path", code_buddy_rescue_templates_path)
|
13
|
+
@template.instance_variable_set("@contents",
|
14
|
+
@template.render(:file => template_path_for_local_rescue(exception)))
|
15
|
+
response.content_type = Mime::HTML
|
16
|
+
render_for_file(rescues_path("layout"), response_code_for_rescue(exception))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<% unless @exception.blamed_files.blank? %>
|
2
|
+
<% if (hide = @exception.blamed_files.length > 8) %>
|
3
|
+
<a href="#" onclick="document.getElementById('blame_trace').style.display='block'; return false;">Show blamed files</a>
|
4
|
+
<% end %>
|
5
|
+
<pre id="blame_trace" <%='style="display:none"' if hide %>><code><%=h @exception.describe_blame %></code></pre>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<%
|
9
|
+
clean_params = request.parameters.clone
|
10
|
+
clean_params.delete("action")
|
11
|
+
clean_params.delete("controller")
|
12
|
+
|
13
|
+
request_dump = clean_params.empty? ? 'None' : clean_params.inspect.gsub(',', ",\n")
|
14
|
+
%>
|
15
|
+
|
16
|
+
<h2 style="margin-top: 30px">Request</h2>
|
17
|
+
<p><b>Parameters</b>: <pre><%=h request_dump %></pre></p>
|
18
|
+
|
19
|
+
<p><a href="#" onclick="document.getElementById('session_dump').style.display='block'; return false;">Show session dump</a></p>
|
20
|
+
<div id="session_dump" style="display:none"><%= debug(request.session.instance_variable_get("@data")) %></div>
|
21
|
+
|
22
|
+
|
23
|
+
<h2 style="margin-top: 30px">Response</h2>
|
24
|
+
<p><b>Headers</b>: <pre><%=h response ? response.headers.inspect.gsub(',', ",\n") : 'None' %></pre></p>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%
|
2
|
+
traces = [
|
3
|
+
["Application Trace", @exception.application_backtrace],
|
4
|
+
["Framework Trace", @exception.framework_backtrace],
|
5
|
+
["Full Trace", @exception.clean_backtrace]
|
6
|
+
]
|
7
|
+
names = traces.collect {|name, trace| name}
|
8
|
+
%>
|
9
|
+
|
10
|
+
<p><code>RAILS_ROOT: <%= defined?(RAILS_ROOT) ? RAILS_ROOT : "unset" %></code></p>
|
11
|
+
|
12
|
+
<div id="traces">
|
13
|
+
<% names.each do |name| %>
|
14
|
+
<%
|
15
|
+
show = "document.getElementById('#{name.gsub /\s/, '-'}').style.display='block';"
|
16
|
+
hide = (names - [name]).collect {|hide_name| "document.getElementById('#{hide_name.gsub /\s/, '-'}').style.display='none';"}
|
17
|
+
%>
|
18
|
+
<a href="#" onclick="<%= hide.join %><%= show %>; return false;"><%= name %></a> <%= '|' unless names.last == name %>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<% traces.each do |name, trace| %>
|
22
|
+
<div id="<%= name.gsub /\s/, '-' %>" style="display: <%= name == "Application Trace" ? 'block' : 'none' %>;">
|
23
|
+
<pre><code><%= trace.enum_with_index.collect { |line, index| link_to line, "code_buddy/stack/#{index}" }.join("\n").html_safe -%></code></pre>
|
24
|
+
</div>
|
25
|
+
<% end %>
|
26
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h1>
|
2
|
+
<%=h @exception.class.to_s %>
|
3
|
+
<% if request.parameters['controller'] %>
|
4
|
+
in <%=h request.parameters['controller'].humanize %>Controller<% if request.parameters['action'] %>#<%=h request.parameters['action'] %><% end %>
|
5
|
+
<% end %>
|
6
|
+
</h1>
|
7
|
+
<pre><%=h @exception.clean_message %></pre>
|
8
|
+
|
9
|
+
<%= render :file => @rescues_path["rescues/_trace.erb"] %>
|
10
|
+
|
11
|
+
<%= render :file => @rescues_path["rescues/_request_and_response.erb"] %>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
2
|
+
<head>
|
3
|
+
<title>Action Controller: Exception caught</title>
|
4
|
+
<style>
|
5
|
+
body { background-color: #fff; color: #333; }
|
6
|
+
|
7
|
+
body, p, ol, ul, td {
|
8
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
9
|
+
font-size: 13px;
|
10
|
+
line-height: 18px;
|
11
|
+
}
|
12
|
+
|
13
|
+
pre {
|
14
|
+
background-color: #eee;
|
15
|
+
padding: 10px;
|
16
|
+
font-size: 11px;
|
17
|
+
}
|
18
|
+
|
19
|
+
a { color: #000; }
|
20
|
+
a:visited { color: #666; }
|
21
|
+
a:hover { color: #fff; background-color:#000; }
|
22
|
+
</style>
|
23
|
+
</head>
|
24
|
+
<body>
|
25
|
+
|
26
|
+
<%= @contents %>
|
27
|
+
|
28
|
+
</body>
|
29
|
+
</html>
|
File without changes
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<h1>
|
2
|
+
<%=h @exception.original_exception.class.to_s %> in
|
3
|
+
<%=h request.parameters["controller"].capitalize if request.parameters["controller"]%>#<%=h request.parameters["action"] %>
|
4
|
+
</h1>
|
5
|
+
|
6
|
+
<p>
|
7
|
+
Showing <i><%=h @exception.file_name %></i> where line <b>#<%=h @exception.line_number %></b> raised:
|
8
|
+
<pre><code><%=h @exception.message %></code></pre>
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<p>Extracted source (around line <b>#<%=h @exception.line_number %></b>):
|
12
|
+
<pre><code><%=h @exception.source_extract %></code></pre></p>
|
13
|
+
|
14
|
+
<p><%=h @exception.sub_template_message %></p>
|
15
|
+
|
16
|
+
<% @real_exception = @exception
|
17
|
+
@exception = @exception.original_exception || @exception %>
|
18
|
+
<%= render :file => @rescues_path["rescues/_trace.erb"] %>
|
19
|
+
<% @exception = @real_exception %>
|
20
|
+
|
21
|
+
<%= render :file => @rescues_path["rescues/_request_and_response.erb"] %>
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module CodeBuddy
|
2
|
+
class Railtie < Rails::Railtie
|
3
|
+
initializer "code_buddy.add_middleware" do |app|
|
4
|
+
if app.config.action_dispatch.show_exceptions
|
5
|
+
app.middleware.swap ActionDispatch::ShowExceptions, CodeBuddy::ShowExceptions
|
6
|
+
app.middleware.use CodeBuddy::ShowApp
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class ShowExceptions < ActionDispatch::ShowExceptions
|
12
|
+
|
13
|
+
silence_warnings do
|
14
|
+
ActionDispatch::ShowExceptions::RESCUES_TEMPLATE_PATH = File.join(File.dirname(__FILE__), 'templates')
|
15
|
+
end
|
16
|
+
|
17
|
+
def rescue_action_locally(request, exception)
|
18
|
+
App.exception = exception
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
File without changes
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
<% traces.each do |name, trace| %>
|
22
22
|
<div id="<%= name.gsub /\s/, '-' %>" style="display: <%= name == "Application Trace" ? 'block' : 'none' %>;">
|
23
|
-
<pre><code><%= trace.enum_with_index.collect { |line, index| link_to line, "code_buddy/#{index}" }.join("\n").html_safe -%></code></pre>
|
23
|
+
<pre><code><%= trace.enum_with_index.collect { |line, index| link_to line, "code_buddy/stack/#{index}" }.join("\n").html_safe -%></code></pre>
|
24
24
|
</div>
|
25
25
|
<% end %>
|
26
26
|
</div>
|
File without changes
|
File without changes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<h1>Routing Error</h1>
|
2
|
+
<p><pre><%=h @exception.message %></pre></p>
|
3
|
+
<% unless @exception.failures.empty? %><p>
|
4
|
+
<h2>Failure reasons:</h2>
|
5
|
+
<ol>
|
6
|
+
<% @exception.failures.each do |route, reason| %>
|
7
|
+
<li><code><%=h route.inspect.gsub('\\', '') %></code> failed because <%=h reason.downcase %></li>
|
8
|
+
<% end %>
|
9
|
+
</ol>
|
10
|
+
</p><% end %>
|
File without changes
|
data/lib/code_buddy/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<div class="banner">
|
2
|
-
<div class="item"><img src="images/buddy.jpeg" class="buddy"/></div>
|
2
|
+
<div class="item"><img src="<%= @static_file_prefix %>images/buddy.jpeg" class="buddy"/></div>
|
3
3
|
<div class="item"><span class="title">CodeBuddy</span><br/>a friendly place to see your code</div>
|
4
4
|
<div class="link"><a href="http://github.com/patshaughnessy/code_buddy">about</a></div>
|
5
|
-
<div class="link"><a href="new">paste stack</a></div>
|
5
|
+
<div class="link"><a href="<%= @static_file_prefix %>new">paste stack</a></div>
|
6
6
|
</div>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<head>
|
2
2
|
<title>Code Buddy</title>
|
3
|
-
<link href="stylesheets/code_buddy.css" media="screen" rel="stylesheet" type="text/css" />
|
4
|
-
<link href="stylesheets/coderay.css" media="screen" rel="stylesheet" type="text/css" />
|
5
|
-
<script src="javascripts/jquery.js" type="text/javascript"></script>
|
6
|
-
<script src="javascripts/underscore.js" type="text/javascript"></script>
|
7
|
-
<script src="javascripts/backbone.js" type="text/javascript"></script>
|
3
|
+
<link href="<%= @static_file_prefix %>stylesheets/code_buddy.css" media="screen" rel="stylesheet" type="text/css" />
|
4
|
+
<link href="<%= @static_file_prefix %>stylesheets/coderay.css" media="screen" rel="stylesheet" type="text/css" />
|
5
|
+
<script src="<%= @static_file_prefix %>javascripts/jquery.js" type="text/javascript"></script>
|
6
|
+
<script src="<%= @static_file_prefix %>javascripts/underscore.js" type="text/javascript"></script>
|
7
|
+
<script src="<%= @static_file_prefix %>javascripts/backbone.js" type="text/javascript"></script>
|
8
8
|
</head>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
</div>
|
13
13
|
<ul id="stack"></ul>
|
14
14
|
<div id='code'></div>
|
15
|
-
<script src="javascripts/code_buddy.js" type="text/javascript"></script>
|
15
|
+
<script src="<%= @static_file_prefix %>javascripts/code_buddy.js" type="text/javascript"></script>
|
16
16
|
<script>
|
17
17
|
var stack = new Stack(<%= @stack.to_json %>);
|
18
18
|
var stackView = new StackView({model: stack});
|
data/lib/code_buddy.rb
CHANGED
@@ -3,7 +3,20 @@ require 'coderay'
|
|
3
3
|
require 'json'
|
4
4
|
require 'json/add/rails'
|
5
5
|
|
6
|
-
require 'code_buddy/middleware'
|
7
6
|
require 'code_buddy/app'
|
8
7
|
require 'code_buddy/stack'
|
9
8
|
require 'code_buddy/stack_frame'
|
9
|
+
require 'code_buddy/middleware'
|
10
|
+
|
11
|
+
def rails_version
|
12
|
+
Rails::VERSION::MAJOR
|
13
|
+
rescue NameError
|
14
|
+
nil
|
15
|
+
end
|
16
|
+
|
17
|
+
case rails_version
|
18
|
+
when 2:
|
19
|
+
require 'code_buddy/rails2/monkey_patch_action_controller'
|
20
|
+
when 3:
|
21
|
+
require 'code_buddy/rails3/railtie.rb'
|
22
|
+
end
|
data/spec/middleware_spec.rb
CHANGED
@@ -1,36 +1,41 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
3
|
describe CodeBuddy::ShowExceptions do
|
4
|
-
|
4
|
+
let (:app) { mock }
|
5
|
+
subject { CodeBuddy::ShowApp.new(app) }
|
5
6
|
|
6
7
|
describe 'Non code_buddy URLs' do
|
7
8
|
it 'should not call the Sinatra app when a non code_buddy URL is found' do
|
8
9
|
CodeBuddy::App.expects(:new).never
|
9
10
|
env = { 'PATH_INFO' => '/some_other_path' }
|
11
|
+
app.expects(:call).with(env)
|
10
12
|
subject.call(env)
|
11
13
|
end
|
12
14
|
|
13
15
|
it 'should not call the Sinatra app when code_buddy is found later in the URL' do
|
14
16
|
CodeBuddy::App.expects(:new).never
|
15
17
|
env = { 'PATH_INFO' => '/some_other_path/code_buddy' }
|
18
|
+
app.expects(:call).with(env)
|
16
19
|
subject.call(env)
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
20
23
|
describe 'code_buddy URLs' do
|
21
24
|
it 'should call the Sinatra app when a code_buddy URL is found and pass in the remaining path only' do
|
22
|
-
|
23
|
-
CodeBuddy::App.expects(:new).returns(
|
24
|
-
|
25
|
+
code_buddy_app = mock
|
26
|
+
CodeBuddy::App.expects(:new).returns(code_buddy_app)
|
27
|
+
code_buddy_app.expects(:call).with({ 'PATH_INFO' => '/12' })
|
25
28
|
env = { 'PATH_INFO' => '/code_buddy/12' }
|
29
|
+
app.expects(:new).never
|
26
30
|
subject.call(env)
|
27
31
|
end
|
28
32
|
|
29
|
-
it 'should call the Sinatra app
|
30
|
-
|
31
|
-
CodeBuddy::App.expects(:new).returns(
|
32
|
-
|
33
|
+
it 'should call the Sinatra app with a null path when the code_buddy root URL is found' do
|
34
|
+
code_buddy_app = mock
|
35
|
+
CodeBuddy::App.expects(:new).returns(code_buddy_app)
|
36
|
+
code_buddy_app.expects(:call).with({ 'PATH_INFO' => '' })
|
33
37
|
env = { 'PATH_INFO' => '/code_buddy' }
|
38
|
+
app.expects(:new).never
|
34
39
|
subject.call(env)
|
35
40
|
end
|
36
41
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,6 +8,9 @@ module Rails
|
|
8
8
|
class Railtie
|
9
9
|
def self.initializer(name); end
|
10
10
|
end
|
11
|
+
class VERSION
|
12
|
+
MAJOR = 3
|
13
|
+
end
|
11
14
|
end
|
12
15
|
module ActionDispatch
|
13
16
|
class ShowExceptions
|
@@ -15,6 +18,8 @@ module ActionDispatch
|
|
15
18
|
end
|
16
19
|
end
|
17
20
|
|
21
|
+
def silence_warnings; end
|
22
|
+
|
18
23
|
require 'code_buddy'
|
19
24
|
|
20
25
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: code_buddy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 27
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Pat Shaughnessy, Alex Rothenberg, Daniel Higginbotham
|
@@ -22,27 +21,21 @@ dependencies:
|
|
22
21
|
name: rack
|
23
22
|
prerelease: false
|
24
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
24
|
requirements:
|
27
|
-
- -
|
25
|
+
- - ">="
|
28
26
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 31
|
30
27
|
segments:
|
31
|
-
- 1
|
32
|
-
- 2
|
33
28
|
- 0
|
34
|
-
version:
|
29
|
+
version: "0"
|
35
30
|
type: :runtime
|
36
31
|
version_requirements: *id001
|
37
32
|
- !ruby/object:Gem::Dependency
|
38
33
|
name: sinatra
|
39
34
|
prerelease: false
|
40
35
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
36
|
requirements:
|
43
37
|
- - ~>
|
44
38
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 19
|
46
39
|
segments:
|
47
40
|
- 1
|
48
41
|
- 1
|
@@ -54,11 +47,9 @@ dependencies:
|
|
54
47
|
name: json_pure
|
55
48
|
prerelease: false
|
56
49
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
50
|
requirements:
|
59
51
|
- - ~>
|
60
52
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 11
|
62
53
|
segments:
|
63
54
|
- 1
|
64
55
|
- 4
|
@@ -70,11 +61,9 @@ dependencies:
|
|
70
61
|
name: coderay
|
71
62
|
prerelease: false
|
72
63
|
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
64
|
requirements:
|
75
65
|
- - ~>
|
76
66
|
- !ruby/object:Gem::Version
|
77
|
-
hash: 55
|
78
67
|
segments:
|
79
68
|
- 0
|
80
69
|
- 9
|
@@ -86,11 +75,9 @@ dependencies:
|
|
86
75
|
name: rake
|
87
76
|
prerelease: false
|
88
77
|
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
78
|
requirements:
|
91
79
|
- - ~>
|
92
80
|
- !ruby/object:Gem::Version
|
93
|
-
hash: 49
|
94
81
|
segments:
|
95
82
|
- 0
|
96
83
|
- 8
|
@@ -102,11 +89,9 @@ dependencies:
|
|
102
89
|
name: rspec
|
103
90
|
prerelease: false
|
104
91
|
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
92
|
requirements:
|
107
93
|
- - ~>
|
108
94
|
- !ruby/object:Gem::Version
|
109
|
-
hash: 7
|
110
95
|
segments:
|
111
96
|
- 2
|
112
97
|
- 2
|
@@ -118,11 +103,9 @@ dependencies:
|
|
118
103
|
name: mocha
|
119
104
|
prerelease: false
|
120
105
|
requirement: &id007 !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
106
|
requirements:
|
123
107
|
- - ~>
|
124
108
|
- !ruby/object:Gem::Version
|
125
|
-
hash: 47
|
126
109
|
segments:
|
127
110
|
- 0
|
128
111
|
- 9
|
@@ -159,22 +142,31 @@ files:
|
|
159
142
|
- lib/code_buddy/public/javascripts/underscore.js
|
160
143
|
- lib/code_buddy/public/stylesheets/code_buddy.css
|
161
144
|
- lib/code_buddy/public/stylesheets/coderay.css
|
145
|
+
- lib/code_buddy/rails2/monkey_patch_action_controller.rb
|
146
|
+
- lib/code_buddy/rails2/templates/rescues/_request_and_response.erb
|
147
|
+
- lib/code_buddy/rails2/templates/rescues/_trace.erb
|
148
|
+
- lib/code_buddy/rails2/templates/rescues/diagnostics.erb
|
149
|
+
- lib/code_buddy/rails2/templates/rescues/layout.erb
|
150
|
+
- lib/code_buddy/rails2/templates/rescues/missing_template.erb
|
151
|
+
- lib/code_buddy/rails2/templates/rescues/routing_error.erb
|
152
|
+
- lib/code_buddy/rails2/templates/rescues/template_error.erb
|
153
|
+
- lib/code_buddy/rails2/templates/rescues/unknown_action.erb
|
154
|
+
- lib/code_buddy/rails3/railtie.rb
|
155
|
+
- lib/code_buddy/rails3/templates/rescues/_request_and_response.erb
|
156
|
+
- lib/code_buddy/rails3/templates/rescues/_trace.erb
|
157
|
+
- lib/code_buddy/rails3/templates/rescues/diagnostics.erb
|
158
|
+
- lib/code_buddy/rails3/templates/rescues/layout.erb
|
159
|
+
- lib/code_buddy/rails3/templates/rescues/missing_template.erb
|
160
|
+
- lib/code_buddy/rails3/templates/rescues/routing_error.erb
|
161
|
+
- lib/code_buddy/rails3/templates/rescues/template_error.erb
|
162
|
+
- lib/code_buddy/rails3/templates/rescues/unknown_action.erb
|
162
163
|
- lib/code_buddy/stack.rb
|
163
164
|
- lib/code_buddy/stack_frame.rb
|
164
|
-
- lib/code_buddy/templates/rescues/_request_and_response.erb
|
165
|
-
- lib/code_buddy/templates/rescues/_trace.erb
|
166
|
-
- lib/code_buddy/templates/rescues/diagnostics.erb
|
167
|
-
- lib/code_buddy/templates/rescues/layout.erb
|
168
|
-
- lib/code_buddy/templates/rescues/missing_template.erb
|
169
|
-
- lib/code_buddy/templates/rescues/routing_error.erb
|
170
|
-
- lib/code_buddy/templates/rescues/template_error.erb
|
171
|
-
- lib/code_buddy/templates/rescues/unknown_action.erb
|
172
165
|
- lib/code_buddy/version.rb
|
173
166
|
- lib/code_buddy/views/banner.erb
|
174
167
|
- lib/code_buddy/views/form.erb
|
175
168
|
- lib/code_buddy/views/header.erb
|
176
169
|
- lib/code_buddy/views/index.erb
|
177
|
-
- lib/code_buddy/views/orig.erb
|
178
170
|
- spec/app_spec.rb
|
179
171
|
- spec/middleware_spec.rb
|
180
172
|
- spec/spec_helper.rb
|
@@ -190,27 +182,23 @@ rdoc_options: []
|
|
190
182
|
require_paths:
|
191
183
|
- lib
|
192
184
|
required_ruby_version: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
185
|
requirements:
|
195
186
|
- - ">="
|
196
187
|
- !ruby/object:Gem::Version
|
197
|
-
hash: 3
|
198
188
|
segments:
|
199
189
|
- 0
|
200
190
|
version: "0"
|
201
191
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
|
-
none: false
|
203
192
|
requirements:
|
204
193
|
- - ">="
|
205
194
|
- !ruby/object:Gem::Version
|
206
|
-
hash: 3
|
207
195
|
segments:
|
208
196
|
- 0
|
209
197
|
version: "0"
|
210
198
|
requirements: []
|
211
199
|
|
212
200
|
rubyforge_project: code_buddy
|
213
|
-
rubygems_version: 1.3.
|
201
|
+
rubygems_version: 1.3.6
|
214
202
|
signing_key:
|
215
203
|
specification_version: 3
|
216
204
|
summary: See the Ruby code running in your app.
|
@@ -1,53 +0,0 @@
|
|
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>
|