Created
May 10, 2013 17:24
-
-
Save BRIMIL01/5555942 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
~/dev/rliapi_json/pkg(master ✔) gem inabox rliapi_json-0.0.7.gem | |
Enter the root url for your personal geminabox instance. (E.g. http://gems/) | |
Host: http://gems.wh.reachlocal.com:9292/ | |
Pushing rliapi_json-0.0.7.gem to http://gems.wh.reachlocal.com:9292/... | |
ERROR: Error (500 received) | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | |
<title>Errno::EIO at /upload</title> | |
<script type="text/javascript"> | |
//<!-- | |
function toggle(id) { | |
var pre = document.getElementById("pre-" + id); | |
var post = document.getElementById("post-" + id); | |
var context = document.getElementById("context-" + id); | |
if (pre.style.display == 'block') { | |
pre.style.display = 'none'; | |
post.style.display = 'none'; | |
context.style.background = "none"; | |
} else { | |
pre.style.display = 'block'; | |
post.style.display = 'block'; | |
context.style.background = "#fffed9"; | |
} | |
} | |
function toggleBacktrace(){ | |
var bt = document.getElementById("backtrace"); | |
var toggler = document.getElementById("expando"); | |
if (bt.className == 'condensed') { | |
bt.className = 'expanded'; | |
toggler.innerHTML = "(condense)"; | |
} else { | |
bt.className = 'condensed'; | |
toggler.innerHTML = "(expand)"; | |
} | |
} | |
//--> | |
</script> | |
<style type="text/css" media="screen"> | |
* {margin: 0; padding: 0; border: 0; outline: 0;} | |
div.clear {clear: both;} | |
body {background: #EEEEEE; margin: 0; padding: 0; | |
font-family: 'Lucida Grande', 'Lucida Sans Unicode', | |
'Garuda';} | |
code {font-family: 'Lucida Console', monospace; | |
font-size: 12px;} | |
li {height: 18px;} | |
ul {list-style: none; margin: 0; padding: 0;} | |
ol:hover {cursor: pointer;} | |
ol li {white-space: pre;} | |
#explanation {font-size: 12px; color: #666666; | |
margin: 20px 0 0 100px;} | |
/* WRAP */ | |
#wrap {width: 1000px; background: #FFFFFF; margin: 0 auto; | |
padding: 30px 50px 20px 50px; | |
border-left: 1px solid #DDDDDD; | |
border-right: 1px solid #DDDDDD;} | |
/* HEADER */ | |
#header {margin: 0 auto 25px auto;} | |
#header img {float: left;} | |
#header #summary {float: left; margin: 12px 0 0 20px; width:660px; | |
font-family: 'Lucida Grande', 'Lucida Sans Unicode';} | |
h1 {margin: 0; font-size: 36px; color: #981919;} | |
h2 {margin: 0; font-size: 22px; color: #333333;} | |
#header ul {margin: 0; font-size: 12px; color: #666666;} | |
#header ul li strong{color: #444444;} | |
#header ul li {display: inline; padding: 0 10px;} | |
#header ul li.first {padding-left: 0;} | |
#header ul li.last {border: 0; padding-right: 0;} | |
/* BODY */ | |
#backtrace, | |
#get, | |
#post, | |
#cookies, | |
#rack {width: 980px; margin: 0 auto 10px auto;} | |
p#nav {float: right; font-size: 14px;} | |
/* BACKTRACE */ | |
a#expando {float: left; padding-left: 5px; color: #666666; | |
font-size: 14px; text-decoration: none; cursor: pointer;} | |
a#expando:hover {text-decoration: underline;} | |
h3 {float: left; width: 100px; margin-bottom: 10px; | |
color: #981919; font-size: 14px; font-weight: bold;} | |
#nav a {color: #666666; text-decoration: none; padding: 0 5px;} | |
#backtrace li.frame-info {background: #f7f7f7; padding-left: 10px; | |
font-size: 12px; color: #333333;} | |
#backtrace ul {list-style-position: outside; border: 1px solid #E9E9E9; | |
border-bottom: 0;} | |
#backtrace ol {width: 920px; margin-left: 50px; | |
font: 10px 'Lucida Console', monospace; color: #666666;} | |
#backtrace ol li {border: 0; border-left: 1px solid #E9E9E9; | |
padding: 2px 0;} | |
#backtrace ol code {font-size: 10px; color: #555555; padding-left: 5px;} | |
#backtrace-ul li {border-bottom: 1px solid #E9E9E9; height: auto; | |
padding: 3px 0;} | |
#backtrace-ul .code {padding: 6px 0 4px 0;} | |
#backtrace.condensed .system, | |
#backtrace.condensed .framework {display:none;} | |
/* REQUEST DATA */ | |
p.no-data {padding-top: 2px; font-size: 12px; color: #666666;} | |
table.req {width: 980px; text-align: left; font-size: 12px; | |
color: #666666; padding: 0; border-spacing: 0; | |
border: 1px solid #EEEEEE; border-bottom: 0; | |
border-left: 0; | |
clear:both} | |
table.req tr th {padding: 2px 10px; font-weight: bold; | |
background: #F7F7F7; border-bottom: 1px solid #EEEEEE; | |
border-left: 1px solid #EEEEEE;} | |
table.req tr td {padding: 2px 20px 2px 10px; | |
border-bottom: 1px solid #EEEEEE; | |
border-left: 1px solid #EEEEEE;} | |
/* HIDE PRE/POST CODE AT START */ | |
.pre-context, | |
.post-context {display: none;} | |
table td.code {width:750px} | |
table td.code div {width:750px;overflow:hidden} | |
</style> | |
</head> | |
<body> | |
<div id="wrap"> | |
<div id="header"> | |
<img src="/__sinatra__/500.png" alt="application error" height="161" width="313" /> | |
<div id="summary"> | |
<h1><strong>Errno::EIO</strong> at <strong>/upload | |
</strong></h1> | |
<h2>Input/output error - <STDERR></h2> | |
<ul> | |
<li class="first"><strong>file:</strong> <code> | |
lint.rb</code></li> | |
<li><strong>location:</strong> <code>write | |
</code></li> | |
<li class="last"><strong>line: | |
</strong> 408</li> | |
</ul> | |
</div> | |
<div class="clear"></div> | |
</div> | |
<div id="backtrace" class='condensed'> | |
<h3>BACKTRACE</h3> | |
<p><a href="#" id="expando" | |
onclick="toggleBacktrace(); return false">(expand)</a></p> | |
<p id="nav"><strong>JUMP TO:</strong> | |
<a href="#get-info">GET</a> | |
<a href="#post-info">POST</a> | |
<a href="#cookie-info">COOKIES</a> | |
<a href="#env-info">ENV</a> | |
</p> | |
<div class="clear"></div> | |
<ul id="backtrace-ul"> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/lint.rb</code> in | |
<code><strong>write</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="401" | |
class="pre-context" id="pre-1" | |
onclick="toggle(1);"> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(error) | |
</code></li> | |
<li class="pre-context-line"><code> @error = error | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> ## * +puts+ must be called with a single argument that responds to +to_s+. | |
</code></li> | |
<li class="pre-context-line"><code> def puts(str) | |
</code></li> | |
</ol> | |
<ol start="408" class="context" id="1" | |
onclick="toggle(1);"> | |
<li class="context-line" id="context-1"><code> @error.puts str</code></li> | |
</ol> | |
<ol start="409" class="post-context" | |
id="post-1" onclick="toggle(1);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> ## * +write+ must be called with a single argument that is a String. | |
</code></li> | |
<li class="post-context-line"><code> def write(str) | |
</code></li> | |
<li class="post-context-line"><code> assert("rack.errors#write not called with a String") { str.kind_of? String } | |
</code></li> | |
<li class="post-context-line"><code> @error.write str | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/lint.rb</code> in | |
<code><strong>puts</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="401" | |
class="pre-context" id="pre-2" | |
onclick="toggle(2);"> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(error) | |
</code></li> | |
<li class="pre-context-line"><code> @error = error | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> ## * +puts+ must be called with a single argument that responds to +to_s+. | |
</code></li> | |
<li class="pre-context-line"><code> def puts(str) | |
</code></li> | |
</ol> | |
<ol start="408" class="context" id="2" | |
onclick="toggle(2);"> | |
<li class="context-line" id="context-2"><code> @error.puts str</code></li> | |
</ol> | |
<ol start="409" class="post-context" | |
id="post-2" onclick="toggle(2);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> ## * +write+ must be called with a single argument that is a String. | |
</code></li> | |
<li class="post-context-line"><code> def write(str) | |
</code></li> | |
<li class="post-context-line"><code> assert("rack.errors#write not called with a String") { str.kind_of? String } | |
</code></li> | |
<li class="post-context-line"><code> @error.write str | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/lint.rb</code> in | |
<code><strong>puts</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="401" | |
class="pre-context" id="pre-3" | |
onclick="toggle(3);"> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(error) | |
</code></li> | |
<li class="pre-context-line"><code> @error = error | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> ## * +puts+ must be called with a single argument that responds to +to_s+. | |
</code></li> | |
<li class="pre-context-line"><code> def puts(str) | |
</code></li> | |
</ol> | |
<ol start="408" class="context" id="3" | |
onclick="toggle(3);"> | |
<li class="context-line" id="context-3"><code> @error.puts str</code></li> | |
</ol> | |
<ol start="409" class="post-context" | |
id="post-3" onclick="toggle(3);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> ## * +write+ must be called with a single argument that is a String. | |
</code></li> | |
<li class="post-context-line"><code> def write(str) | |
</code></li> | |
<li class="post-context-line"><code> assert("rack.errors#write not called with a String") { str.kind_of? String } | |
</code></li> | |
<li class="post-context-line"><code> @error.write str | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>dump_errors!</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1106" | |
class="pre-context" id="pre-4" | |
onclick="toggle(4);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> return false unless key.respond_to? :superclass and key.superclass < Exception | |
</code></li> | |
<li class="pre-context-line"><code> error_block!(key.superclass, *block_params) | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def dump_errors!(boom) | |
</code></li> | |
<li class="pre-context-line"><code> msg = ["#{boom.class} - #{boom.message}:", *boom.backtrace].join("\n\t") | |
</code></li> | |
</ol> | |
<ol start="1113" class="context" id="4" | |
onclick="toggle(4);"> | |
<li class="context-line" id="context-4"><code> @env['rack.errors'].puts(msg)</code></li> | |
</ol> | |
<ol start="1114" class="post-context" | |
id="post-4" onclick="toggle(4);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> class << self | |
</code></li> | |
<li class="post-context-line"><code> attr_reader :routes, :filters, :templates, :errors | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> # Removes all routes, filters, middleware and extension hooks from the | |
</code></li> | |
<li class="post-context-line"><code> # current class (not routes/filters/... defined by its superclass). | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>handle_exception!</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1073" | |
class="pre-context" id="pre-5" | |
onclick="toggle(5);"> | |
<li class="pre-context-line"><code> else | |
</code></li> | |
<li class="pre-context-line"><code> status(500) | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> status(500) unless status.between? 400, 599 | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> if server_error? | |
</code></li> | |
</ol> | |
<ol start="1080" class="context" id="5" | |
onclick="toggle(5);"> | |
<li class="context-line" id="context-5"><code> dump_errors! boom if settings.dump_errors?</code></li> | |
</ol> | |
<ol start="1081" class="post-context" | |
id="post-5" onclick="toggle(5);"> | |
<li class="post-context-line"><code> raise boom if settings.show_exceptions? and settings.show_exceptions != :after_handler | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if not_found? | |
</code></li> | |
<li class="post-context-line"><code> headers['X-Cascade'] = 'pass' if settings.x_cascade? | |
</code></li> | |
<li class="post-context-line"><code> body '<h1>Not Found</h1>' | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>block in dispatch!</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1049" | |
class="pre-context" id="pre-6" | |
onclick="toggle(6);"> | |
<li class="pre-context-line"><code> def dispatch! | |
</code></li> | |
<li class="pre-context-line"><code> invoke do | |
</code></li> | |
<li class="pre-context-line"><code> static! if settings.static? && (request.get? || request.head?) | |
</code></li> | |
<li class="pre-context-line"><code> filter! :before | |
</code></li> | |
<li class="pre-context-line"><code> route! | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> rescue ::Exception => boom | |
</code></li> | |
</ol> | |
<ol start="1056" class="context" id="6" | |
onclick="toggle(6);"> | |
<li class="context-line" id="context-6"><code> invoke { handle_exception!(boom) }</code></li> | |
</ol> | |
<ol start="1057" class="post-context" | |
id="post-6" onclick="toggle(6);"> | |
<li class="post-context-line"><code> ensure | |
</code></li> | |
<li class="post-context-line"><code> begin | |
</code></li> | |
<li class="post-context-line"><code> filter! :after unless env['sinatra.static_file'] | |
</code></li> | |
<li class="post-context-line"><code> rescue ::Exception => boom | |
</code></li> | |
<li class="post-context-line"><code> invoke { handle_exception!(boom) } unless @env['sinatra.error'] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>block in invoke</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1028" | |
class="pre-context" id="pre-7" | |
onclick="toggle(7);"> | |
<li class="pre-context-line"><code> # Creates a Hash with indifferent access. | |
</code></li> | |
<li class="pre-context-line"><code> def indifferent_hash | |
</code></li> | |
<li class="pre-context-line"><code> Hash.new {|hash,key| hash[key.to_s] if Symbol === key } | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> # Run the block with 'throw :halt' support and apply result to the response. | |
</code></li> | |
<li class="pre-context-line"><code> def invoke | |
</code></li> | |
</ol> | |
<ol start="1035" class="context" id="7" | |
onclick="toggle(7);"> | |
<li class="context-line" id="context-7"><code> res = catch(:halt) { yield }</code></li> | |
</ol> | |
<ol start="1036" class="post-context" | |
id="post-7" onclick="toggle(7);"> | |
<li class="post-context-line"><code> res = [res] if Fixnum === res or String === res | |
</code></li> | |
<li class="post-context-line"><code> if Array === res and Fixnum === res.first | |
</code></li> | |
<li class="post-context-line"><code> res = res.dup | |
</code></li> | |
<li class="post-context-line"><code> status(res.shift) | |
</code></li> | |
<li class="post-context-line"><code> body(res.pop) | |
</code></li> | |
<li class="post-context-line"><code> headers(*res) | |
</code></li> | |
<li class="post-context-line"><code> elsif res.respond_to? :each | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>catch</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1028" | |
class="pre-context" id="pre-8" | |
onclick="toggle(8);"> | |
<li class="pre-context-line"><code> # Creates a Hash with indifferent access. | |
</code></li> | |
<li class="pre-context-line"><code> def indifferent_hash | |
</code></li> | |
<li class="pre-context-line"><code> Hash.new {|hash,key| hash[key.to_s] if Symbol === key } | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> # Run the block with 'throw :halt' support and apply result to the response. | |
</code></li> | |
<li class="pre-context-line"><code> def invoke | |
</code></li> | |
</ol> | |
<ol start="1035" class="context" id="8" | |
onclick="toggle(8);"> | |
<li class="context-line" id="context-8"><code> res = catch(:halt) { yield }</code></li> | |
</ol> | |
<ol start="1036" class="post-context" | |
id="post-8" onclick="toggle(8);"> | |
<li class="post-context-line"><code> res = [res] if Fixnum === res or String === res | |
</code></li> | |
<li class="post-context-line"><code> if Array === res and Fixnum === res.first | |
</code></li> | |
<li class="post-context-line"><code> res = res.dup | |
</code></li> | |
<li class="post-context-line"><code> status(res.shift) | |
</code></li> | |
<li class="post-context-line"><code> body(res.pop) | |
</code></li> | |
<li class="post-context-line"><code> headers(*res) | |
</code></li> | |
<li class="post-context-line"><code> elsif res.respond_to? :each | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>invoke</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1028" | |
class="pre-context" id="pre-9" | |
onclick="toggle(9);"> | |
<li class="pre-context-line"><code> # Creates a Hash with indifferent access. | |
</code></li> | |
<li class="pre-context-line"><code> def indifferent_hash | |
</code></li> | |
<li class="pre-context-line"><code> Hash.new {|hash,key| hash[key.to_s] if Symbol === key } | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> # Run the block with 'throw :halt' support and apply result to the response. | |
</code></li> | |
<li class="pre-context-line"><code> def invoke | |
</code></li> | |
</ol> | |
<ol start="1035" class="context" id="9" | |
onclick="toggle(9);"> | |
<li class="context-line" id="context-9"><code> res = catch(:halt) { yield }</code></li> | |
</ol> | |
<ol start="1036" class="post-context" | |
id="post-9" onclick="toggle(9);"> | |
<li class="post-context-line"><code> res = [res] if Fixnum === res or String === res | |
</code></li> | |
<li class="post-context-line"><code> if Array === res and Fixnum === res.first | |
</code></li> | |
<li class="post-context-line"><code> res = res.dup | |
</code></li> | |
<li class="post-context-line"><code> status(res.shift) | |
</code></li> | |
<li class="post-context-line"><code> body(res.pop) | |
</code></li> | |
<li class="post-context-line"><code> headers(*res) | |
</code></li> | |
<li class="post-context-line"><code> elsif res.respond_to? :each | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>rescue in dispatch!</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1049" | |
class="pre-context" id="pre-10" | |
onclick="toggle(10);"> | |
<li class="pre-context-line"><code> def dispatch! | |
</code></li> | |
<li class="pre-context-line"><code> invoke do | |
</code></li> | |
<li class="pre-context-line"><code> static! if settings.static? && (request.get? || request.head?) | |
</code></li> | |
<li class="pre-context-line"><code> filter! :before | |
</code></li> | |
<li class="pre-context-line"><code> route! | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> rescue ::Exception => boom | |
</code></li> | |
</ol> | |
<ol start="1056" class="context" id="10" | |
onclick="toggle(10);"> | |
<li class="context-line" id="context-10"><code> invoke { handle_exception!(boom) }</code></li> | |
</ol> | |
<ol start="1057" class="post-context" | |
id="post-10" onclick="toggle(10);"> | |
<li class="post-context-line"><code> ensure | |
</code></li> | |
<li class="post-context-line"><code> begin | |
</code></li> | |
<li class="post-context-line"><code> filter! :after unless env['sinatra.static_file'] | |
</code></li> | |
<li class="post-context-line"><code> rescue ::Exception => boom | |
</code></li> | |
<li class="post-context-line"><code> invoke { handle_exception!(boom) } unless @env['sinatra.error'] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>dispatch!</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1056" | |
class="pre-context" id="pre-11" | |
onclick="toggle(11);"> | |
<li class="pre-context-line"><code> invoke { handle_exception!(boom) } | |
</code></li> | |
<li class="pre-context-line"><code> ensure | |
</code></li> | |
<li class="pre-context-line"><code> begin | |
</code></li> | |
<li class="pre-context-line"><code> filter! :after unless env['sinatra.static_file'] | |
</code></li> | |
<li class="pre-context-line"><code> rescue ::Exception => boom | |
</code></li> | |
<li class="pre-context-line"><code> invoke { handle_exception!(boom) } unless @env['sinatra.error'] | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
</ol> | |
<ol start="1063" class="context" id="11" | |
onclick="toggle(11);"> | |
<li class="context-line" id="context-11"><code> end</code></li> | |
</ol> | |
<ol start="1064" class="post-context" | |
id="post-11" onclick="toggle(11);"> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> # Error handling during requests. | |
</code></li> | |
<li class="post-context-line"><code> def handle_exception!(boom) | |
</code></li> | |
<li class="post-context-line"><code> @env['sinatra.error'] = boom | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if boom.respond_to? :http_status | |
</code></li> | |
<li class="post-context-line"><code> status(boom.http_status) | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>block in call!</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="871" | |
class="pre-context" id="pre-12" | |
onclick="toggle(12);"> | |
<li class="pre-context-line"><code> @request = Request.new(env) | |
</code></li> | |
<li class="pre-context-line"><code> @response = Response.new | |
</code></li> | |
<li class="pre-context-line"><code> @params = indifferent_params(@request.params) | |
</code></li> | |
<li class="pre-context-line"><code> template_cache.clear if settings.reload_templates | |
</code></li> | |
<li class="pre-context-line"><code> force_encoding(@params) | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> @response['Content-Type'] = nil | |
</code></li> | |
</ol> | |
<ol start="878" class="context" id="12" | |
onclick="toggle(12);"> | |
<li class="context-line" id="context-12"><code> invoke { dispatch! }</code></li> | |
</ol> | |
<ol start="879" class="post-context" | |
id="post-12" onclick="toggle(12);"> | |
<li class="post-context-line"><code> invoke { error_block!(response.status) } unless @env['sinatra.error'] | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> unless @response['Content-Type'] | |
</code></li> | |
<li class="post-context-line"><code> if Array === body and body[0].respond_to? :content_type | |
</code></li> | |
<li class="post-context-line"><code> content_type body[0].content_type | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
<li class="post-context-line"><code> content_type :html | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>block in invoke</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1028" | |
class="pre-context" id="pre-13" | |
onclick="toggle(13);"> | |
<li class="pre-context-line"><code> # Creates a Hash with indifferent access. | |
</code></li> | |
<li class="pre-context-line"><code> def indifferent_hash | |
</code></li> | |
<li class="pre-context-line"><code> Hash.new {|hash,key| hash[key.to_s] if Symbol === key } | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> # Run the block with 'throw :halt' support and apply result to the response. | |
</code></li> | |
<li class="pre-context-line"><code> def invoke | |
</code></li> | |
</ol> | |
<ol start="1035" class="context" id="13" | |
onclick="toggle(13);"> | |
<li class="context-line" id="context-13"><code> res = catch(:halt) { yield }</code></li> | |
</ol> | |
<ol start="1036" class="post-context" | |
id="post-13" onclick="toggle(13);"> | |
<li class="post-context-line"><code> res = [res] if Fixnum === res or String === res | |
</code></li> | |
<li class="post-context-line"><code> if Array === res and Fixnum === res.first | |
</code></li> | |
<li class="post-context-line"><code> res = res.dup | |
</code></li> | |
<li class="post-context-line"><code> status(res.shift) | |
</code></li> | |
<li class="post-context-line"><code> body(res.pop) | |
</code></li> | |
<li class="post-context-line"><code> headers(*res) | |
</code></li> | |
<li class="post-context-line"><code> elsif res.respond_to? :each | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>catch</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1028" | |
class="pre-context" id="pre-14" | |
onclick="toggle(14);"> | |
<li class="pre-context-line"><code> # Creates a Hash with indifferent access. | |
</code></li> | |
<li class="pre-context-line"><code> def indifferent_hash | |
</code></li> | |
<li class="pre-context-line"><code> Hash.new {|hash,key| hash[key.to_s] if Symbol === key } | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> # Run the block with 'throw :halt' support and apply result to the response. | |
</code></li> | |
<li class="pre-context-line"><code> def invoke | |
</code></li> | |
</ol> | |
<ol start="1035" class="context" id="14" | |
onclick="toggle(14);"> | |
<li class="context-line" id="context-14"><code> res = catch(:halt) { yield }</code></li> | |
</ol> | |
<ol start="1036" class="post-context" | |
id="post-14" onclick="toggle(14);"> | |
<li class="post-context-line"><code> res = [res] if Fixnum === res or String === res | |
</code></li> | |
<li class="post-context-line"><code> if Array === res and Fixnum === res.first | |
</code></li> | |
<li class="post-context-line"><code> res = res.dup | |
</code></li> | |
<li class="post-context-line"><code> status(res.shift) | |
</code></li> | |
<li class="post-context-line"><code> body(res.pop) | |
</code></li> | |
<li class="post-context-line"><code> headers(*res) | |
</code></li> | |
<li class="post-context-line"><code> elsif res.respond_to? :each | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>invoke</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1028" | |
class="pre-context" id="pre-15" | |
onclick="toggle(15);"> | |
<li class="pre-context-line"><code> # Creates a Hash with indifferent access. | |
</code></li> | |
<li class="pre-context-line"><code> def indifferent_hash | |
</code></li> | |
<li class="pre-context-line"><code> Hash.new {|hash,key| hash[key.to_s] if Symbol === key } | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> # Run the block with 'throw :halt' support and apply result to the response. | |
</code></li> | |
<li class="pre-context-line"><code> def invoke | |
</code></li> | |
</ol> | |
<ol start="1035" class="context" id="15" | |
onclick="toggle(15);"> | |
<li class="context-line" id="context-15"><code> res = catch(:halt) { yield }</code></li> | |
</ol> | |
<ol start="1036" class="post-context" | |
id="post-15" onclick="toggle(15);"> | |
<li class="post-context-line"><code> res = [res] if Fixnum === res or String === res | |
</code></li> | |
<li class="post-context-line"><code> if Array === res and Fixnum === res.first | |
</code></li> | |
<li class="post-context-line"><code> res = res.dup | |
</code></li> | |
<li class="post-context-line"><code> status(res.shift) | |
</code></li> | |
<li class="post-context-line"><code> body(res.pop) | |
</code></li> | |
<li class="post-context-line"><code> headers(*res) | |
</code></li> | |
<li class="post-context-line"><code> elsif res.respond_to? :each | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>call!</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="871" | |
class="pre-context" id="pre-16" | |
onclick="toggle(16);"> | |
<li class="pre-context-line"><code> @request = Request.new(env) | |
</code></li> | |
<li class="pre-context-line"><code> @response = Response.new | |
</code></li> | |
<li class="pre-context-line"><code> @params = indifferent_params(@request.params) | |
</code></li> | |
<li class="pre-context-line"><code> template_cache.clear if settings.reload_templates | |
</code></li> | |
<li class="pre-context-line"><code> force_encoding(@params) | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> @response['Content-Type'] = nil | |
</code></li> | |
</ol> | |
<ol start="878" class="context" id="16" | |
onclick="toggle(16);"> | |
<li class="context-line" id="context-16"><code> invoke { dispatch! }</code></li> | |
</ol> | |
<ol start="879" class="post-context" | |
id="post-16" onclick="toggle(16);"> | |
<li class="post-context-line"><code> invoke { error_block!(response.status) } unless @env['sinatra.error'] | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> unless @response['Content-Type'] | |
</code></li> | |
<li class="post-context-line"><code> if Array === body and body[0].respond_to? :content_type | |
</code></li> | |
<li class="post-context-line"><code> content_type body[0].content_type | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
<li class="post-context-line"><code> content_type :html | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="857" | |
class="pre-context" id="pre-17" | |
onclick="toggle(17);"> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> @template_cache = Tilt::Cache.new | |
</code></li> | |
<li class="pre-context-line"><code> yield self if block_given? | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> # Rack call interface. | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="864" class="context" id="17" | |
onclick="toggle(17);"> | |
<li class="context-line" id="context-17"><code> dup.call!(env)</code></li> | |
</ol> | |
<ol start="865" class="post-context" | |
id="post-17" onclick="toggle(17);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> attr_accessor :env, :request, :response, :params | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def call!(env) # :nodoc: | |
</code></li> | |
<li class="post-context-line"><code> @env = env | |
</code></li> | |
<li class="post-context-line"><code> @request = Request.new(env) | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/xss_header.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="11" | |
class="pre-context" id="pre-18" | |
onclick="toggle(18);"> | |
<li class="pre-context-line"><code> # | |
</code></li> | |
<li class="pre-context-line"><code> # Options: | |
</code></li> | |
<li class="pre-context-line"><code> # xss_mode:: How the browser should prevent the attack (default: :block) | |
</code></li> | |
<li class="pre-context-line"><code> class XSSHeader < Base | |
</code></li> | |
<li class="pre-context-line"><code> default_options :xss_mode => :block, :nosniff => true | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="18" class="context" id="18" | |
onclick="toggle(18);"> | |
<li class="context-line" id="context-18"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="19" class="post-context" | |
id="post-18" onclick="toggle(18);"> | |
<li class="post-context-line"><code> headers['X-XSS-Protection'] ||= "1; mode=#{options[:xss_mode]}" if html? headers | |
</code></li> | |
<li class="post-context-line"><code> headers['X-Content-Type-Options'] ||= 'nosniff' if options[:nosniff] | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code>end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/path_traversal.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="9" | |
class="pre-context" id="pre-19" | |
onclick="toggle(19);"> | |
<li class="pre-context-line"><code> # | |
</code></li> | |
<li class="pre-context-line"><code> # Unescapes '/' and '.', expands +path_info+. | |
</code></li> | |
<li class="pre-context-line"><code> # Thus <tt>GET /foo/%2e%2e%2fbar</tt> becomes <tt>GET /bar</tt>. | |
</code></li> | |
<li class="pre-context-line"><code> class PathTraversal < Base | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> path_was = env["PATH_INFO"] | |
</code></li> | |
<li class="pre-context-line"><code> env["PATH_INFO"] = cleanup path_was if path_was && !path_was.empty? | |
</code></li> | |
</ol> | |
<ol start="16" class="context" id="19" | |
onclick="toggle(19);"> | |
<li class="context-line" id="context-19"><code> app.call env</code></li> | |
</ol> | |
<ol start="17" class="post-context" | |
id="post-19" onclick="toggle(19);"> | |
<li class="post-context-line"><code> ensure | |
</code></li> | |
<li class="post-context-line"><code> env["PATH_INFO"] = path_was | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def cleanup(path) | |
</code></li> | |
<li class="post-context-line"><code> parts = [] | |
</code></li> | |
<li class="post-context-line"><code> unescaped = path.gsub('%2e', '.').gsub('%2f', '/') | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/json_csrf.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="11" | |
class="pre-context" id="pre-20" | |
onclick="toggle(20);"> | |
<li class="pre-context-line"><code> # Array prototype has been patched to track data. Checks the referrer | |
</code></li> | |
<li class="pre-context-line"><code> # even on GET requests if the content type is JSON. | |
</code></li> | |
<li class="pre-context-line"><code> class JsonCsrf < Base | |
</code></li> | |
<li class="pre-context-line"><code> default_reaction :deny | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> request = Request.new(env) | |
</code></li> | |
</ol> | |
<ol start="18" class="context" id="20" | |
onclick="toggle(20);"> | |
<li class="context-line" id="context-20"><code> status, headers, body = app.call(env)</code></li> | |
</ol> | |
<ol start="19" class="post-context" | |
id="post-20" onclick="toggle(20);"> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if has_vector? request, headers | |
</code></li> | |
<li class="post-context-line"><code> warn env, "attack prevented by #{self.class}" | |
</code></li> | |
<li class="post-context-line"><code> react(env) | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="42" | |
class="pre-context" id="pre-21" | |
onclick="toggle(21);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> unless accepts? env | |
</code></li> | |
<li class="pre-context-line"><code> warn env, "attack prevented by #{self.class}" | |
</code></li> | |
<li class="pre-context-line"><code> result = react env | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
</ol> | |
<ol start="49" class="context" id="21" | |
onclick="toggle(21);"> | |
<li class="context-line" id="context-21"><code> result or app.call(env)</code></li> | |
</ol> | |
<ol start="50" class="post-context" | |
id="post-21" onclick="toggle(21);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def react(env) | |
</code></li> | |
<li class="post-context-line"><code> result = send(options[:reaction], env) | |
</code></li> | |
<li class="post-context-line"><code> result if Array === result and result.size == 3 | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="42" | |
class="pre-context" id="pre-22" | |
onclick="toggle(22);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> unless accepts? env | |
</code></li> | |
<li class="pre-context-line"><code> warn env, "attack prevented by #{self.class}" | |
</code></li> | |
<li class="pre-context-line"><code> result = react env | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
</ol> | |
<ol start="49" class="context" id="22" | |
onclick="toggle(22);"> | |
<li class="context-line" id="context-22"><code> result or app.call(env)</code></li> | |
</ol> | |
<ol start="50" class="post-context" | |
id="post-22" onclick="toggle(22);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def react(env) | |
</code></li> | |
<li class="post-context-line"><code> result = send(options[:reaction], env) | |
</code></li> | |
<li class="post-context-line"><code> result if Array === result and result.size == 3 | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/frame_options.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="24" | |
class="pre-context" id="pre-23" | |
onclick="toggle(23);"> | |
<li class="pre-context-line"><code> frame_options = options[:frame_options] | |
</code></li> | |
<li class="pre-context-line"><code> frame_options = options[:frame_options].to_s.upcase unless frame_options.respond_to? :to_str | |
</code></li> | |
<li class="pre-context-line"><code> frame_options.to_str | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="31" class="context" id="23" | |
onclick="toggle(23);"> | |
<li class="context-line" id="context-23"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="32" class="post-context" | |
id="post-23" onclick="toggle(23);"> | |
<li class="post-context-line"><code> headers['X-Frame-Options'] ||= frame_options if html? headers | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code>end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/nulllogger.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="2" | |
class="pre-context" id="pre-24" | |
onclick="toggle(24);"> | |
<li class="pre-context-line"><code> class NullLogger | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> env['rack.logger'] = self | |
</code></li> | |
</ol> | |
<ol start="9" class="context" id="24" | |
onclick="toggle(24);"> | |
<li class="context-line" id="context-24"><code> @app.call(env)</code></li> | |
</ol> | |
<ol start="10" class="post-context" | |
id="post-24" onclick="toggle(24);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def info(progname = nil, &block); end | |
</code></li> | |
<li class="post-context-line"><code> def debug(progname = nil, &block); end | |
</code></li> | |
<li class="post-context-line"><code> def warn(progname = nil, &block); end | |
</code></li> | |
<li class="post-context-line"><code> def error(progname = nil, &block); end | |
</code></li> | |
<li class="post-context-line"><code> def fatal(progname = nil, &block); end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/head.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="4" | |
class="pre-context" id="pre-25" | |
onclick="toggle(25);"> | |
<li class="pre-context-line"><code> # Rack::Head returns an empty body for all HEAD requests. It leaves | |
</code></li> | |
<li class="pre-context-line"><code> # all other requests unchanged. | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="11" class="context" id="25" | |
onclick="toggle(25);"> | |
<li class="context-line" id="context-25"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="12" class="post-context" | |
id="post-25" onclick="toggle(25);"> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if env["REQUEST_METHOD"] == "HEAD" | |
</code></li> | |
<li class="post-context-line"><code> body.close if body.respond_to? :close | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, []] | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/showexceptions.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="14" | |
class="pre-context" id="pre-26" | |
onclick="toggle(26);"> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> @template = ERB.new(TEMPLATE) | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="21" class="context" id="26" | |
onclick="toggle(26);"> | |
<li class="context-line" id="context-26"><code> @app.call(env)</code></li> | |
</ol> | |
<ol start="22" class="post-context" | |
id="post-26" onclick="toggle(26);"> | |
<li class="post-context-line"><code> rescue Exception => e | |
</code></li> | |
<li class="post-context-line"><code> errors, env["rack.errors"] = env["rack.errors"], @@eats_errors | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if prefers_plain_text?(env) | |
</code></li> | |
<li class="post-context-line"><code> content_type = "text/plain" | |
</code></li> | |
<li class="post-context-line"><code> body = [dump_exception(e)] | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="165" | |
class="pre-context" id="pre-27" | |
onclick="toggle(27);"> | |
<li class="pre-context-line"><code> # Some Rack handlers (Thin, Rainbows!) implement an extended body object protocol, however, | |
</code></li> | |
<li class="pre-context-line"><code> # some middleware (namely Rack::Lint) will break it by not mirroring the methods in question. | |
</code></li> | |
<li class="pre-context-line"><code> # This middleware will detect an extended body object and will make sure it reaches the | |
</code></li> | |
<li class="pre-context-line"><code> # handler directly. We do this here, so our middleware and middleware set up by the app will | |
</code></li> | |
<li class="pre-context-line"><code> # still be able to run. | |
</code></li> | |
<li class="pre-context-line"><code> class ExtendedRack < Struct.new(:app) | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="172" class="context" id="27" | |
onclick="toggle(27);"> | |
<li class="context-line" id="context-27"><code> result, callback = app.call(env), env['async.callback']</code></li> | |
</ol> | |
<ol start="173" class="post-context" | |
id="post-27" onclick="toggle(27);"> | |
<li class="post-context-line"><code> return result unless callback and async?(*result) | |
</code></li> | |
<li class="post-context-line"><code> after_response { callback.call result } | |
</code></li> | |
<li class="post-context-line"><code> setup_close(env, *result) | |
</code></li> | |
<li class="post-context-line"><code> throw :async | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> private | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1940" | |
class="pre-context" id="pre-28" | |
onclick="toggle(28);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def helpers | |
</code></li> | |
<li class="pre-context-line"><code> @instance | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="1947" class="context" id="28" | |
onclick="toggle(28);"> | |
<li class="context-line" id="context-28"><code> @stack.call(env)</code></li> | |
</ol> | |
<ol start="1948" class="post-context" | |
id="post-28" onclick="toggle(28);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def inspect | |
</code></li> | |
<li class="post-context-line"><code> "#<#{@instance.class} app_file=#{settings.app_file.inspect}>" | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/xss_header.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="11" | |
class="pre-context" id="pre-29" | |
onclick="toggle(29);"> | |
<li class="pre-context-line"><code> # | |
</code></li> | |
<li class="pre-context-line"><code> # Options: | |
</code></li> | |
<li class="pre-context-line"><code> # xss_mode:: How the browser should prevent the attack (default: :block) | |
</code></li> | |
<li class="pre-context-line"><code> class XSSHeader < Base | |
</code></li> | |
<li class="pre-context-line"><code> default_options :xss_mode => :block, :nosniff => true | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="18" class="context" id="29" | |
onclick="toggle(29);"> | |
<li class="context-line" id="context-29"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="19" class="post-context" | |
id="post-29" onclick="toggle(29);"> | |
<li class="post-context-line"><code> headers['X-XSS-Protection'] ||= "1; mode=#{options[:xss_mode]}" if html? headers | |
</code></li> | |
<li class="post-context-line"><code> headers['X-Content-Type-Options'] ||= 'nosniff' if options[:nosniff] | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code>end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/path_traversal.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="9" | |
class="pre-context" id="pre-30" | |
onclick="toggle(30);"> | |
<li class="pre-context-line"><code> # | |
</code></li> | |
<li class="pre-context-line"><code> # Unescapes '/' and '.', expands +path_info+. | |
</code></li> | |
<li class="pre-context-line"><code> # Thus <tt>GET /foo/%2e%2e%2fbar</tt> becomes <tt>GET /bar</tt>. | |
</code></li> | |
<li class="pre-context-line"><code> class PathTraversal < Base | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> path_was = env["PATH_INFO"] | |
</code></li> | |
<li class="pre-context-line"><code> env["PATH_INFO"] = cleanup path_was if path_was && !path_was.empty? | |
</code></li> | |
</ol> | |
<ol start="16" class="context" id="30" | |
onclick="toggle(30);"> | |
<li class="context-line" id="context-30"><code> app.call env</code></li> | |
</ol> | |
<ol start="17" class="post-context" | |
id="post-30" onclick="toggle(30);"> | |
<li class="post-context-line"><code> ensure | |
</code></li> | |
<li class="post-context-line"><code> env["PATH_INFO"] = path_was | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def cleanup(path) | |
</code></li> | |
<li class="post-context-line"><code> parts = [] | |
</code></li> | |
<li class="post-context-line"><code> unescaped = path.gsub('%2e', '.').gsub('%2f', '/') | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/json_csrf.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="11" | |
class="pre-context" id="pre-31" | |
onclick="toggle(31);"> | |
<li class="pre-context-line"><code> # Array prototype has been patched to track data. Checks the referrer | |
</code></li> | |
<li class="pre-context-line"><code> # even on GET requests if the content type is JSON. | |
</code></li> | |
<li class="pre-context-line"><code> class JsonCsrf < Base | |
</code></li> | |
<li class="pre-context-line"><code> default_reaction :deny | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> request = Request.new(env) | |
</code></li> | |
</ol> | |
<ol start="18" class="context" id="31" | |
onclick="toggle(31);"> | |
<li class="context-line" id="context-31"><code> status, headers, body = app.call(env)</code></li> | |
</ol> | |
<ol start="19" class="post-context" | |
id="post-31" onclick="toggle(31);"> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if has_vector? request, headers | |
</code></li> | |
<li class="post-context-line"><code> warn env, "attack prevented by #{self.class}" | |
</code></li> | |
<li class="post-context-line"><code> react(env) | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="42" | |
class="pre-context" id="pre-32" | |
onclick="toggle(32);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> unless accepts? env | |
</code></li> | |
<li class="pre-context-line"><code> warn env, "attack prevented by #{self.class}" | |
</code></li> | |
<li class="pre-context-line"><code> result = react env | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
</ol> | |
<ol start="49" class="context" id="32" | |
onclick="toggle(32);"> | |
<li class="context-line" id="context-32"><code> result or app.call(env)</code></li> | |
</ol> | |
<ol start="50" class="post-context" | |
id="post-32" onclick="toggle(32);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def react(env) | |
</code></li> | |
<li class="post-context-line"><code> result = send(options[:reaction], env) | |
</code></li> | |
<li class="post-context-line"><code> result if Array === result and result.size == 3 | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="42" | |
class="pre-context" id="pre-33" | |
onclick="toggle(33);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> unless accepts? env | |
</code></li> | |
<li class="pre-context-line"><code> warn env, "attack prevented by #{self.class}" | |
</code></li> | |
<li class="pre-context-line"><code> result = react env | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
</ol> | |
<ol start="49" class="context" id="33" | |
onclick="toggle(33);"> | |
<li class="context-line" id="context-33"><code> result or app.call(env)</code></li> | |
</ol> | |
<ol start="50" class="post-context" | |
id="post-33" onclick="toggle(33);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def react(env) | |
</code></li> | |
<li class="post-context-line"><code> result = send(options[:reaction], env) | |
</code></li> | |
<li class="post-context-line"><code> result if Array === result and result.size == 3 | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-protection-1.5.0/lib/rack/protection/frame_options.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="24" | |
class="pre-context" id="pre-34" | |
onclick="toggle(34);"> | |
<li class="pre-context-line"><code> frame_options = options[:frame_options] | |
</code></li> | |
<li class="pre-context-line"><code> frame_options = options[:frame_options].to_s.upcase unless frame_options.respond_to? :to_str | |
</code></li> | |
<li class="pre-context-line"><code> frame_options.to_str | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="31" class="context" id="34" | |
onclick="toggle(34);"> | |
<li class="context-line" id="context-34"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="32" class="post-context" | |
id="post-34" onclick="toggle(34);"> | |
<li class="post-context-line"><code> headers['X-Frame-Options'] ||= frame_options if html? headers | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code>end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/nulllogger.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="2" | |
class="pre-context" id="pre-35" | |
onclick="toggle(35);"> | |
<li class="pre-context-line"><code> class NullLogger | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> env['rack.logger'] = self | |
</code></li> | |
</ol> | |
<ol start="9" class="context" id="35" | |
onclick="toggle(35);"> | |
<li class="context-line" id="context-35"><code> @app.call(env)</code></li> | |
</ol> | |
<ol start="10" class="post-context" | |
id="post-35" onclick="toggle(35);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def info(progname = nil, &block); end | |
</code></li> | |
<li class="post-context-line"><code> def debug(progname = nil, &block); end | |
</code></li> | |
<li class="post-context-line"><code> def warn(progname = nil, &block); end | |
</code></li> | |
<li class="post-context-line"><code> def error(progname = nil, &block); end | |
</code></li> | |
<li class="post-context-line"><code> def fatal(progname = nil, &block); end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/head.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="4" | |
class="pre-context" id="pre-36" | |
onclick="toggle(36);"> | |
<li class="pre-context-line"><code> # Rack::Head returns an empty body for all HEAD requests. It leaves | |
</code></li> | |
<li class="pre-context-line"><code> # all other requests unchanged. | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="11" class="context" id="36" | |
onclick="toggle(36);"> | |
<li class="context-line" id="context-36"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="12" class="post-context" | |
id="post-36" onclick="toggle(36);"> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if env["REQUEST_METHOD"] == "HEAD" | |
</code></li> | |
<li class="post-context-line"><code> body.close if body.respond_to? :close | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, []] | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/methodoverride.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="14" | |
class="pre-context" id="pre-37" | |
onclick="toggle(37);"> | |
<li class="pre-context-line"><code> method = method_override(env) | |
</code></li> | |
<li class="pre-context-line"><code> if HTTP_METHODS.include?(method) | |
</code></li> | |
<li class="pre-context-line"><code> env["rack.methodoverride.original_method"] = env["REQUEST_METHOD"] | |
</code></li> | |
<li class="pre-context-line"><code> env["REQUEST_METHOD"] = method | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
</ol> | |
<ol start="21" class="context" id="37" | |
onclick="toggle(37);"> | |
<li class="context-line" id="context-37"><code> @app.call(env)</code></li> | |
</ol> | |
<ol start="22" class="post-context" | |
id="post-37" onclick="toggle(37);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def method_override(env) | |
</code></li> | |
<li class="post-context-line"><code> req = Request.new(env) | |
</code></li> | |
<li class="post-context-line"><code> method = req.POST[METHOD_OVERRIDE_PARAM_KEY] || | |
</code></li> | |
<li class="post-context-line"><code> env[HTTP_METHOD_OVERRIDE_HEADER] | |
</code></li> | |
<li class="post-context-line"><code> method.to_s.upcase | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/showexceptions.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="14" | |
class="pre-context" id="pre-38" | |
onclick="toggle(38);"> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> @template = ERB.new(TEMPLATE) | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="21" class="context" id="38" | |
onclick="toggle(38);"> | |
<li class="context-line" id="context-38"><code> @app.call(env)</code></li> | |
</ol> | |
<ol start="22" class="post-context" | |
id="post-38" onclick="toggle(38);"> | |
<li class="post-context-line"><code> rescue Exception => e | |
</code></li> | |
<li class="post-context-line"><code> errors, env["rack.errors"] = env["rack.errors"], @@eats_errors | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if prefers_plain_text?(env) | |
</code></li> | |
<li class="post-context-line"><code> content_type = "text/plain" | |
</code></li> | |
<li class="post-context-line"><code> body = [dump_exception(e)] | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="165" | |
class="pre-context" id="pre-39" | |
onclick="toggle(39);"> | |
<li class="pre-context-line"><code> # Some Rack handlers (Thin, Rainbows!) implement an extended body object protocol, however, | |
</code></li> | |
<li class="pre-context-line"><code> # some middleware (namely Rack::Lint) will break it by not mirroring the methods in question. | |
</code></li> | |
<li class="pre-context-line"><code> # This middleware will detect an extended body object and will make sure it reaches the | |
</code></li> | |
<li class="pre-context-line"><code> # handler directly. We do this here, so our middleware and middleware set up by the app will | |
</code></li> | |
<li class="pre-context-line"><code> # still be able to run. | |
</code></li> | |
<li class="pre-context-line"><code> class ExtendedRack < Struct.new(:app) | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="172" class="context" id="39" | |
onclick="toggle(39);"> | |
<li class="context-line" id="context-39"><code> result, callback = app.call(env), env['async.callback']</code></li> | |
</ol> | |
<ol start="173" class="post-context" | |
id="post-39" onclick="toggle(39);"> | |
<li class="post-context-line"><code> return result unless callback and async?(*result) | |
</code></li> | |
<li class="post-context-line"><code> after_response { callback.call result } | |
</code></li> | |
<li class="post-context-line"><code> setup_close(env, *result) | |
</code></li> | |
<li class="post-context-line"><code> throw :async | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> private | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1940" | |
class="pre-context" id="pre-40" | |
onclick="toggle(40);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def helpers | |
</code></li> | |
<li class="pre-context-line"><code> @instance | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="1947" class="context" id="40" | |
onclick="toggle(40);"> | |
<li class="context-line" id="context-40"><code> @stack.call(env)</code></li> | |
</ol> | |
<ol start="1948" class="post-context" | |
id="post-40" onclick="toggle(40);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def inspect | |
</code></li> | |
<li class="post-context-line"><code> "#<#{@instance.class} app_file=#{settings.app_file.inspect}>" | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>block in call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1603" | |
class="pre-context" id="pre-41" | |
onclick="toggle(41);"> | |
<li class="pre-context-line"><code> setup_default_middleware builder | |
</code></li> | |
<li class="pre-context-line"><code> setup_middleware builder | |
</code></li> | |
<li class="pre-context-line"><code> builder.run app | |
</code></li> | |
<li class="pre-context-line"><code> builder | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="1610" class="context" id="41" | |
onclick="toggle(41);"> | |
<li class="context-line" id="context-41"><code> synchronize { prototype.call(env) }</code></li> | |
</ol> | |
<ol start="1611" class="post-context" | |
id="post-41" onclick="toggle(41);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> private | |
</code></li> | |
<li class="post-context-line"><code> def setup_default_middleware(builder) | |
</code></li> | |
<li class="post-context-line"><code> builder.use ExtendedRack | |
</code></li> | |
<li class="post-context-line"><code> builder.use ShowExceptions if show_exceptions? | |
</code></li> | |
<li class="post-context-line"><code> builder.use Rack::MethodOverride if method_override? | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>synchronize</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1686" | |
class="pre-context" id="pre-42" | |
onclick="toggle(42);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> @@mutex = Mutex.new | |
</code></li> | |
<li class="pre-context-line"><code> def synchronize(&block) | |
</code></li> | |
<li class="pre-context-line"><code> if lock? | |
</code></li> | |
<li class="pre-context-line"><code> @@mutex.synchronize(&block) | |
</code></li> | |
<li class="pre-context-line"><code> else | |
</code></li> | |
</ol> | |
<ol start="1693" class="context" id="42" | |
onclick="toggle(42);"> | |
<li class="context-line" id="context-42"><code> yield</code></li> | |
</ol> | |
<ol start="1694" class="post-context" | |
id="post-42" onclick="toggle(42);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> public | |
</code></li> | |
<li class="post-context-line"><code> CALLERS_TO_IGNORE = [ # :nodoc: | |
</code></li> | |
<li class="post-context-line"><code> /\/sinatra(\/(base|main|showexceptions))?\.rb$/, # all sinatra code | |
</code></li> | |
<li class="post-context-line"><code> /lib\/tilt.*\.rb$/, # all tilt code | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="1603" | |
class="pre-context" id="pre-43" | |
onclick="toggle(43);"> | |
<li class="pre-context-line"><code> setup_default_middleware builder | |
</code></li> | |
<li class="pre-context-line"><code> setup_middleware builder | |
</code></li> | |
<li class="pre-context-line"><code> builder.run app | |
</code></li> | |
<li class="pre-context-line"><code> builder | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="1610" class="context" id="43" | |
onclick="toggle(43);"> | |
<li class="context-line" id="context-43"><code> synchronize { prototype.call(env) }</code></li> | |
</ol> | |
<ol start="1611" class="post-context" | |
id="post-43" onclick="toggle(43);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> private | |
</code></li> | |
<li class="post-context-line"><code> def setup_default_middleware(builder) | |
</code></li> | |
<li class="post-context-line"><code> builder.use ExtendedRack | |
</code></li> | |
<li class="post-context-line"><code> builder.use ShowExceptions if show_exceptions? | |
</code></li> | |
<li class="post-context-line"><code> builder.use Rack::MethodOverride if method_override? | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/lint.rb</code> in | |
<code><strong>_call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="42" | |
class="pre-context" id="pre-44" | |
onclick="toggle(44);"> | |
<li class="pre-context-line"><code> assert("No env given") { env } | |
</code></li> | |
<li class="pre-context-line"><code> check_env env | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> env['rack.input'] = InputWrapper.new(env['rack.input']) | |
</code></li> | |
<li class="pre-context-line"><code> env['rack.errors'] = ErrorWrapper.new(env['rack.errors']) | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> ## and returns an Array of exactly three values: | |
</code></li> | |
</ol> | |
<ol start="49" class="context" id="44" | |
onclick="toggle(44);"> | |
<li class="context-line" id="context-44"><code> status, headers, @body = @app.call(env)</code></li> | |
</ol> | |
<ol start="50" class="post-context" | |
id="post-44" onclick="toggle(44);"> | |
<li class="post-context-line"><code> ## The *status*, | |
</code></li> | |
<li class="post-context-line"><code> check_status status | |
</code></li> | |
<li class="post-context-line"><code> ## the *headers*, | |
</code></li> | |
<li class="post-context-line"><code> check_headers headers | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> check_hijack_response headers, env | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/lint.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="30" | |
class="pre-context" id="pre-45" | |
onclick="toggle(45);"> | |
<li class="pre-context-line"><code> ## after to catch all mistakes. | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> ## = Rack applications | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> ## A Rack application is a Ruby object (not a class) that | |
</code></li> | |
<li class="pre-context-line"><code> ## responds to +call+. | |
</code></li> | |
<li class="pre-context-line"><code> def call(env=nil) | |
</code></li> | |
</ol> | |
<ol start="37" class="context" id="45" | |
onclick="toggle(45);"> | |
<li class="context-line" id="context-45"><code> dup._call(env)</code></li> | |
</ol> | |
<ol start="38" class="post-context" | |
id="post-45" onclick="toggle(45);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def _call(env) | |
</code></li> | |
<li class="post-context-line"><code> ## It takes exactly one argument, the *environment* | |
</code></li> | |
<li class="post-context-line"><code> assert("No env given") { env } | |
</code></li> | |
<li class="post-context-line"><code> check_env env | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/showexceptions.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="17" | |
class="pre-context" id="pre-46" | |
onclick="toggle(46);"> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> @template = ERB.new(TEMPLATE) | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="24" class="context" id="46" | |
onclick="toggle(46);"> | |
<li class="context-line" id="context-46"><code> @app.call(env)</code></li> | |
</ol> | |
<ol start="25" class="post-context" | |
id="post-46" onclick="toggle(46);"> | |
<li class="post-context-line"><code> rescue StandardError, LoadError, SyntaxError => e | |
</code></li> | |
<li class="post-context-line"><code> exception_string = dump_exception(e) | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> env["rack.errors"].puts(exception_string) | |
</code></li> | |
<li class="post-context-line"><code> env["rack.errors"].flush | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if prefers_plain_text?(env) | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/commonlogger.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="26" | |
class="pre-context" id="pre-47" | |
onclick="toggle(47);"> | |
<li class="pre-context-line"><code> def initialize(app, logger=nil) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> @logger = logger | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> began_at = Time.now | |
</code></li> | |
</ol> | |
<ol start="33" class="context" id="47" | |
onclick="toggle(47);"> | |
<li class="context-line" id="context-47"><code> status, header, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="34" class="post-context" | |
id="post-47" onclick="toggle(47);"> | |
<li class="post-context-line"><code> header = Utils::HeaderHash.new(header) | |
</code></li> | |
<li class="post-context-line"><code> body = BodyProxy.new(body) { log(env, status, header, began_at) } | |
</code></li> | |
<li class="post-context-line"><code> [status, header, body] | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> private | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sinatra-1.4.2/lib/sinatra/base.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code framework"> | |
<ol start="202" | |
class="pre-context" id="pre-48" | |
onclick="toggle(48);"> | |
<li class="pre-context-line"><code> env['sinatra.commonlogger'] ? @app.call(env) : super | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> superclass.class_eval do | |
</code></li> | |
<li class="pre-context-line"><code> alias call_without_check call unless method_defined? :call_without_check | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
<li class="pre-context-line"><code> env['sinatra.commonlogger'] = true | |
</code></li> | |
</ol> | |
<ol start="209" class="context" id="48" | |
onclick="toggle(48);"> | |
<li class="context-line" id="context-48"><code> call_without_check(env)</code></li> | |
</ol> | |
<ol start="210" class="post-context" | |
id="post-48" onclick="toggle(48);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> class NotFound < NameError #:nodoc: | |
</code></li> | |
<li class="post-context-line"><code> def http_status; 404 end | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/chunked.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="36" | |
class="pre-context" id="pre-49" | |
onclick="toggle(49);"> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="43" class="context" id="49" | |
onclick="toggle(49);"> | |
<li class="context-line" id="context-49"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="44" class="post-context" | |
id="post-49" onclick="toggle(49);"> | |
<li class="post-context-line"><code> headers = HeaderHash.new(headers) | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if env['HTTP_VERSION'] == 'HTTP/1.0' || | |
</code></li> | |
<li class="post-context-line"><code> STATUS_WITH_NO_ENTITY_BODY.include?(status) || | |
</code></li> | |
<li class="post-context-line"><code> headers['Content-Length'] || | |
</code></li> | |
<li class="post-context-line"><code> headers['Transfer-Encoding'] | |
</code></li> | |
<li class="post-context-line"><code> [status, headers, body] | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/content_length.rb</code> in | |
<code><strong>call</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="7" | |
class="pre-context" id="pre-50" | |
onclick="toggle(50);"> | |
<li class="pre-context-line"><code> include Rack::Utils | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def initialize(app) | |
</code></li> | |
<li class="pre-context-line"><code> @app = app | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> def call(env) | |
</code></li> | |
</ol> | |
<ol start="14" class="context" id="50" | |
onclick="toggle(50);"> | |
<li class="context-line" id="context-50"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="15" class="post-context" | |
id="post-50" onclick="toggle(50);"> | |
<li class="post-context-line"><code> headers = HeaderHash.new(headers) | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> if !STATUS_WITH_NO_ENTITY_BODY.include?(status.to_i) && | |
</code></li> | |
<li class="post-context-line"><code> !headers['Content-Length'] && | |
</code></li> | |
<li class="post-context-line"><code> !headers['Transfer-Encoding'] && | |
</code></li> | |
<li class="post-context-line"><code> body.respond_to?(:to_ary) | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info system"> | |
<code>/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/handler/webrick.rb</code> in | |
<code><strong>service</strong></code> | |
</li> | |
<li class="code system"> | |
<ol start="53" | |
class="pre-context" id="pre-51" | |
onclick="toggle(51);"> | |
<li class="pre-context-line"><code> env["QUERY_STRING"] ||= "" | |
</code></li> | |
<li class="pre-context-line"><code> unless env["PATH_INFO"] == "" | |
</code></li> | |
<li class="pre-context-line"><code> path, n = req.request_uri.path, env["SCRIPT_NAME"].length | |
</code></li> | |
<li class="pre-context-line"><code> env["PATH_INFO"] = path[n, path.length-n] | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> env["REQUEST_PATH"] ||= [env["SCRIPT_NAME"], env["PATH_INFO"]].join | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
</ol> | |
<ol start="60" class="context" id="51" | |
onclick="toggle(51);"> | |
<li class="context-line" id="context-51"><code> status, headers, body = @app.call(env)</code></li> | |
</ol> | |
<ol start="61" class="post-context" | |
id="post-51" onclick="toggle(51);"> | |
<li class="post-context-line"><code> begin | |
</code></li> | |
<li class="post-context-line"><code> res.status = status.to_i | |
</code></li> | |
<li class="post-context-line"><code> headers.each { |k, vs| | |
</code></li> | |
<li class="post-context-line"><code> if k.downcase == "set-cookie" | |
</code></li> | |
<li class="post-context-line"><code> res.cookies.concat vs.split("\n") | |
</code></li> | |
<li class="post-context-line"><code> else | |
</code></li> | |
<li class="post-context-line"><code> # Since WEBrick won't accept repeated headers, | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info app"> | |
<code>/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/httpserver.rb</code> in | |
<code><strong>service</strong></code> | |
</li> | |
<li class="code app"> | |
<ol start="131" | |
class="pre-context" id="pre-52" | |
onclick="toggle(52);"> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code> servlet, options, script_name, path_info = search_servlet(req.path) | |
</code></li> | |
<li class="pre-context-line"><code> raise HTTPStatus::NotFound, "`#{req.path}' not found." unless servlet | |
</code></li> | |
<li class="pre-context-line"><code> req.script_name = script_name | |
</code></li> | |
<li class="pre-context-line"><code> req.path_info = path_info | |
</code></li> | |
<li class="pre-context-line"><code> si = servlet.get_instance(self, *options) | |
</code></li> | |
<li class="pre-context-line"><code> @logger.debug(format("%s is invoked.", si.class.name)) | |
</code></li> | |
</ol> | |
<ol start="138" class="context" id="52" | |
onclick="toggle(52);"> | |
<li class="context-line" id="context-52"><code> si.service(req, res)</code></li> | |
</ol> | |
<ol start="139" class="post-context" | |
id="post-52" onclick="toggle(52);"> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> def do_OPTIONS(req, res) | |
</code></li> | |
<li class="post-context-line"><code> res["allow"] = "GET,HEAD,POST,OPTIONS" | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> ## | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info app"> | |
<code>/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/httpserver.rb</code> in | |
<code><strong>run</strong></code> | |
</li> | |
<li class="code app"> | |
<ol start="87" | |
class="pre-context" id="pre-53" | |
onclick="toggle(53);"> | |
<li class="pre-context-line"><code> if callback = server[:RequestCallback] | |
</code></li> | |
<li class="pre-context-line"><code> callback.call(req, res) | |
</code></li> | |
<li class="pre-context-line"><code> elsif callback = server[:RequestHandler] | |
</code></li> | |
<li class="pre-context-line"><code> msg = ":RequestHandler is deprecated, please use :RequestCallback" | |
</code></li> | |
<li class="pre-context-line"><code> @logger.warn(msg) | |
</code></li> | |
<li class="pre-context-line"><code> callback.call(req, res) | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
</ol> | |
<ol start="94" class="context" id="53" | |
onclick="toggle(53);"> | |
<li class="context-line" id="context-53"><code> server.service(req, res)</code></li> | |
</ol> | |
<ol start="95" class="post-context" | |
id="post-53" onclick="toggle(53);"> | |
<li class="post-context-line"><code> rescue HTTPStatus::EOFError, HTTPStatus::RequestTimeout => ex | |
</code></li> | |
<li class="post-context-line"><code> res.set_error(ex) | |
</code></li> | |
<li class="post-context-line"><code> rescue HTTPStatus::Error => ex | |
</code></li> | |
<li class="post-context-line"><code> @logger.error(ex.message) | |
</code></li> | |
<li class="post-context-line"><code> res.set_error(ex) | |
</code></li> | |
<li class="post-context-line"><code> rescue HTTPStatus::Status => ex | |
</code></li> | |
<li class="post-context-line"><code> res.status = ex.code | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info app"> | |
<code>/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/webrick/server.rb</code> in | |
<code><strong>block in start_thread</strong></code> | |
</li> | |
<li class="code app"> | |
<ol start="184" | |
class="pre-context" id="pre-54" | |
onclick="toggle(54);"> | |
<li class="pre-context-line"><code> addr = sock.peeraddr | |
</code></li> | |
<li class="pre-context-line"><code> @logger.debug "accept: #{addr[3]}:#{addr[1]}" | |
</code></li> | |
<li class="pre-context-line"><code> rescue SocketError | |
</code></li> | |
<li class="pre-context-line"><code> @logger.debug "accept: <address unknown>" | |
</code></li> | |
<li class="pre-context-line"><code> raise | |
</code></li> | |
<li class="pre-context-line"><code> end | |
</code></li> | |
<li class="pre-context-line"><code> call_callback(:AcceptCallback, sock) | |
</code></li> | |
</ol> | |
<ol start="191" class="context" id="54" | |
onclick="toggle(54);"> | |
<li class="context-line" id="context-54"><code> block ? block.call(sock) : run(sock)</code></li> | |
</ol> | |
<ol start="192" class="post-context" | |
id="post-54" onclick="toggle(54);"> | |
<li class="post-context-line"><code> rescue Errno::ENOTCONN | |
</code></li> | |
<li class="post-context-line"><code> @logger.debug "Errno::ENOTCONN raised" | |
</code></li> | |
<li class="post-context-line"><code> rescue ServerError => ex | |
</code></li> | |
<li class="post-context-line"><code> msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}" | |
</code></li> | |
<li class="post-context-line"><code> @logger.error msg | |
</code></li> | |
<li class="post-context-line"><code> rescue Exception => ex | |
</code></li> | |
<li class="post-context-line"><code> @logger.error ex | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
</ul> | |
</div> <!-- /BACKTRACE --> | |
<div id="get"> | |
<h3 id="get-info">GET</h3> | |
<p class="no-data">No GET data.</p> | |
<div class="clear"></div> | |
</div> <!-- /GET --> | |
<div id="post"> | |
<h3 id="post-info">POST</h3> | |
<table class="req"> | |
<tr> | |
<th>Variable</th> | |
<th>Value</th> | |
</tr> | |
<tr> | |
<td>file</td> | |
<td class="code"><div>{:filename=>"rliapi_json-0.0.7.gem", :type=>"application/octet-stream", :name=>"file", :tempfile=>#<File:/tmp/RackMultipart20130510-32449-oh4y0j>, :head=>"Content-Disposition: form-data; name=\"file\"; filename=\"rliapi_json-0.0.7.gem\"; modification-date=\"Fri, 10 May 2013 10:11:10 -0700\"; read-date=\"Fri, 10 May 2013 10:11:10 -0700\"\r\nContent-Type: application/octet-stream\r\n"}</div></td> | |
</tr> | |
</table> | |
<div class="clear"></div> | |
</div> <!-- /POST --> | |
<div id="cookies"> | |
<h3 id="cookie-info">COOKIES</h3> | |
<p class="no-data">No cookie data.</p> | |
<div class="clear"></div> | |
</div> <!-- /COOKIES --> | |
<div id="rack"> | |
<h3 id="env-info">Rack ENV</h3> | |
<table class="req"> | |
<tr> | |
<th>Variable</th> | |
<th>Value</th> | |
</tr> | |
<tr> | |
<td>CONTENT_LENGTH</td> | |
<td class="code"><div>10553</div></td> | |
</tr> | |
<tr> | |
<td>CONTENT_TYPE</td> | |
<td class="code"><div>multipart/form-data; boundary=a9ce87654cbe57fd122936fabf7fa22c5bac8f7a</div></td> | |
</tr> | |
<tr> | |
<td>GATEWAY_INTERFACE</td> | |
<td class="code"><div>CGI/1.1</div></td> | |
</tr> | |
<tr> | |
<td>HTTP_ACCEPT</td> | |
<td class="code"><div>text/plain</div></td> | |
</tr> | |
<tr> | |
<td>HTTP_DATE</td> | |
<td class="code"><div>Fri, 10 May 2013 17:11:49 GMT</div></td> | |
</tr> | |
<tr> | |
<td>HTTP_HOST</td> | |
<td class="code"><div>gems.wh.reachlocal.com:9292</div></td> | |
</tr> | |
<tr> | |
<td>HTTP_USER_AGENT</td> | |
<td class="code"><div>HTTPClient/1.0 (2.3.3, ruby 2.0.0 (2013-02-24))</div></td> | |
</tr> | |
<tr> | |
<td>HTTP_VERSION</td> | |
<td class="code"><div>HTTP/1.1</div></td> | |
</tr> | |
<tr> | |
<td>PATH_INFO</td> | |
<td class="code"><div>/upload</div></td> | |
</tr> | |
<tr> | |
<td>QUERY_STRING</td> | |
<td class="code"><div></div></td> | |
</tr> | |
<tr> | |
<td>REMOTE_ADDR</td> | |
<td class="code"><div>10.10.16.59</div></td> | |
</tr> | |
<tr> | |
<td>REMOTE_HOST</td> | |
<td class="code"><div>10.10.16.59</div></td> | |
</tr> | |
<tr> | |
<td>REQUEST_METHOD</td> | |
<td class="code"><div>POST</div></td> | |
</tr> | |
<tr> | |
<td>REQUEST_PATH</td> | |
<td class="code"><div>/upload</div></td> | |
</tr> | |
<tr> | |
<td>REQUEST_URI</td> | |
<td class="code"><div>http://gems.wh.reachlocal.com:9292/upload</div></td> | |
</tr> | |
<tr> | |
<td>SCRIPT_NAME</td> | |
<td class="code"><div></div></td> | |
</tr> | |
<tr> | |
<td>SERVER_NAME</td> | |
<td class="code"><div>gems.wh.reachlocal.com</div></td> | |
</tr> | |
<tr> | |
<td>SERVER_PORT</td> | |
<td class="code"><div>9292</div></td> | |
</tr> | |
<tr> | |
<td>SERVER_PROTOCOL</td> | |
<td class="code"><div>HTTP/1.1</div></td> | |
</tr> | |
<tr> | |
<td>SERVER_SOFTWARE</td> | |
<td class="code"><div>WEBrick/1.3.1 (Ruby/1.9.3/2013-02-22)</div></td> | |
</tr> | |
<tr> | |
<td>rack.errors</td> | |
<td class="code"><div>#<Object:0x00000019e24cf8></div></td> | |
</tr> | |
<tr> | |
<td>rack.input</td> | |
<td class="code"><div>#<Rack::Lint::InputWrapper:0x0000001a7bfd30 @input=#<StringIO:0x0000001a7d5608>></div></td> | |
</tr> | |
<tr> | |
<td>rack.logger</td> | |
<td class="code"><div>#<Rack::NullLogger:0x00000019db89e0 @app=#<Rack::Protection::FrameOptions:0x00000019db8cb0 @app=#<Rack::Protection::HttpOrigin:0x00000019db9110 @app=#<Rack::Protection::IPSpoofing:0x00000019db92a0 @app=#<Rack::Protection::JsonCsrf:0x00000019db9340 @app=#<Rack::Protection::PathTraversal:0x00000019db93e0 @app=#<Rack::Protection::XSSHeader:0x00000019db94a8 @app=#<Hostess:0x000000199e2a28 @default_layout=:layout, @app=#<Geminabox:0x0000001992c390 @default_layout=:layout, @app=nil, @template_cache=#<Tilt::Cache:0x0000001992c368 @cache={}>>, @template_cache=#<Tilt::Cache:0x000000199e29d8 @cache={}>>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :report_key=>"protection.failed", :html_types=>["text/html", "application/xhtml"], :xss_mode=>:block, :nosniff=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :report_key=>"protection.failed", :html_types=>["text/html", "application/xhtml"], :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :report_key=>"protection.failed", :html_types=>["text/html", "application/xhtml"], :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :report_key=>"protection.failed", :html_types=>["text/html", "application/xhtml"], :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :report_key=>"protection.failed", :html_types=>["text/html", "application/xhtml"], :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :report_key=>"protection.failed", :html_types=>["text/html", "application/xhtml"], :frame_options=>:sameorigin, :except=>[:session_hijacking, :remote_token]}, @frame_options="SAMEORIGIN">></div></td> | |
</tr> | |
<tr> | |
<td>rack.multiprocess</td> | |
<td class="code"><div>false</div></td> | |
</tr> | |
<tr> | |
<td>rack.multithread</td> | |
<td class="code"><div>true</div></td> | |
</tr> | |
<tr> | |
<td>rack.request.cookie_hash</td> | |
<td class="code"><div>{}</div></td> | |
</tr> | |
<tr> | |
<td>rack.request.form_hash</td> | |
<td class="code"><div>{"file"=>{:filename=>"rliapi_json-0.0.7.gem", :type=>"application/octet-stream", :name=>"file", :tempfile=>#<File:/tmp/RackMultipart20130510-32449-oh4y0j>, :head=>"Content-Disposition: form-data; name=\"file\"; filename=\"rliapi_json-0.0.7.gem\"; modification-date=\"Fri, 10 May 2013 10:11:10 -0700\"; read-date=\"Fri, 10 May 2013 10:11:10 -0700\"\r\nContent-Type: application/octet-stream\r\n"}}</div></td> | |
</tr> | |
<tr> | |
<td>rack.request.form_input</td> | |
<td class="code"><div>#<Rack::Lint::InputWrapper:0x0000001a7bfd30 @input=#<StringIO:0x0000001a7d5608>></div></td> | |
</tr> | |
<tr> | |
<td>rack.request.query_hash</td> | |
<td class="code"><div>{}</div></td> | |
</tr> | |
<tr> | |
<td>rack.request.query_string</td> | |
<td class="code"><div></div></td> | |
</tr> | |
<tr> | |
<td>rack.run_once</td> | |
<td class="code"><div>false</div></td> | |
</tr> | |
<tr> | |
<td>rack.url_scheme</td> | |
<td class="code"><div>http</div></td> | |
</tr> | |
<tr> | |
<td>rack.version</td> | |
<td class="code"><div>[1, 2]</div></td> | |
</tr> | |
<tr> | |
<td>sinatra.accept</td> | |
<td class="code"><div>[text/plain]</div></td> | |
</tr> | |
<tr> | |
<td>sinatra.commonlogger</td> | |
<td class="code"><div>true</div></td> | |
</tr> | |
<tr> | |
<td>sinatra.error</td> | |
<td class="code"><div>#<Errno::EIO: Input/output error - <STDERR>></div></td> | |
</tr> | |
</table> | |
<div class="clear"></div> | |
</div> <!-- /RACK ENV --> | |
<p id="explanation">You're seeing this error because you have | |
enabled the <code>show_exceptions</code> setting.</p> | |
</div> <!-- /WRAP --> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment