Skip to content

Instantly share code, notes, and snippets.

@chrisvfritz
Created September 18, 2013 23:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrisvfritz/6617263 to your computer and use it in GitHub Desktop.
Save chrisvfritz/6617263 to your computer and use it in GitHub Desktop.
Docverter error while trying to convert from Markdown to MOBI
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>RuntimeError at &#x2F;convert</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>RuntimeError</strong> at <strong>&#x2F;convert
</strong></h1>
<h2></h2>
<ul>
<li class="first"><strong>file:</strong> <code>
base.rb</code></li>
<li><strong>location:</strong> <code>run_command
</code></li>
<li class="last"><strong>line:
</strong> 25</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 app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;runner&#x2F;base.rb</code> in
<code><strong>run_command</strong></code>
</li>
<li class="code app">
<ol start="18"
class="pre-context" id="pre-1"
onclick="toggle(1);">
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> def run_command(options)
</code></li>
<li class="pre-context-line"><code> output = IO.popen(options) do |f|
</code></li>
<li class="pre-context-line"><code> f.read
</code></li>
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code> if $?.exitstatus != 0
</code></li>
</ol>
<ol start="25" class="context" id="1"
onclick="toggle(1);">
<li class="context-line" id="context-1"><code> raise output</code></li>
</ol>
<ol start="26" class="post-context"
id="post-1" onclick="toggle(1);">
<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> def with_manifest
</code></li>
<li class="post-context-line"><code> Dir.chdir(directory) do
</code></li>
<li class="post-context-line"><code> yield DocverterServer::Manifest.load_file(&quot;manifest.yml&quot;)
</code></li>
<li class="post-context-line"><code> end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;runner&#x2F;calibre.rb</code> in
<code><strong>run</strong></code>
</li>
<li class="code app">
<ol start="1"
class="pre-context" id="pre-2"
onclick="toggle(2);">
<li class="pre-context-line"><code>class DocverterServer::Runner::Calibre &lt; DocverterServer::Runner::Base
</code></li>
<li class="pre-context-line"><code> def run
</code></li>
<li class="pre-context-line"><code> with_manifest do
</code></li>
<li class="pre-context-line"><code> output = generate_output_filename(&#x27;mobi&#x27;)
</code></li>
<li class="pre-context-line"><code> options = [&quot;ebook-convert&quot;, input_filename, output]
</code></li>
</ol>
<ol start="6" class="context" id="2"
onclick="toggle(2);">
<li class="context-line" id="context-2"><code> run_command(options)</code></li>
</ol>
<ol start="7" class="post-context"
id="post-2" onclick="toggle(2);">
<li class="post-context-line"><code> output
</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 app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;runner&#x2F;base.rb</code> in
<code><strong>with_manifest</strong></code>
</li>
<li class="code app">
<ol start="24"
class="pre-context" id="pre-3"
onclick="toggle(3);">
<li class="pre-context-line"><code> if $?.exitstatus != 0
</code></li>
<li class="pre-context-line"><code> raise output
</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 with_manifest
</code></li>
<li class="pre-context-line"><code> Dir.chdir(directory) do
</code></li>
</ol>
<ol start="31" class="context" id="3"
onclick="toggle(3);">
<li class="context-line" id="context-3"><code> yield DocverterServer::Manifest.load_file(&quot;manifest.yml&quot;)</code></li>
</ol>
<ol start="32" class="post-context"
id="post-3" onclick="toggle(3);">
<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>
<li class="post-context-line"><code>end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;runner&#x2F;base.rb</code> in
<code><strong>with_manifest</strong></code>
</li>
<li class="code app">
<ol start="23"
class="pre-context" id="pre-5"
onclick="toggle(5);">
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code> if $?.exitstatus != 0
</code></li>
<li class="pre-context-line"><code> raise output
</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 with_manifest
</code></li>
</ol>
<ol start="30" class="context" id="5"
onclick="toggle(5);">
<li class="context-line" id="context-5"><code> Dir.chdir(directory) do</code></li>
</ol>
<ol start="31" class="post-context"
id="post-5" onclick="toggle(5);">
<li class="post-context-line"><code> yield DocverterServer::Manifest.load_file(&quot;manifest.yml&quot;)
</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>
<li class="post-context-line"><code>end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;runner&#x2F;calibre.rb</code> in
<code><strong>run</strong></code>
</li>
<li class="code app">
<ol start="1"
class="pre-context" id="pre-6"
onclick="toggle(6);">
<li class="pre-context-line"><code>class DocverterServer::Runner::Calibre &lt; DocverterServer::Runner::Base
</code></li>
<li class="pre-context-line"><code> def run
</code></li>
</ol>
<ol start="3" class="context" id="6"
onclick="toggle(6);">
<li class="context-line" id="context-6"><code> with_manifest do</code></li>
</ol>
<ol start="4" class="post-context"
id="post-6" onclick="toggle(6);">
<li class="post-context-line"><code> output = generate_output_filename(&#x27;mobi&#x27;)
</code></li>
<li class="post-context-line"><code> options = [&quot;ebook-convert&quot;, input_filename, output]
</code></li>
<li class="post-context-line"><code> run_command(options)
</code></li>
<li class="post-context-line"><code> output
</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 app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;conversion.rb</code> in
<code><strong>run</strong></code>
</li>
<li class="code app">
<ol start="15"
class="pre-context" id="pre-7"
onclick="toggle(7);">
<li class="pre-context-line"><code> @html_filename = manifest[&#x27;input_files&#x27;][0]
</code></li>
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code> @output_filename = DocverterServer::Runner::PDF.new(directory, @html_filename).run
</code></li>
<li class="pre-context-line"><code> elsif manifest[&#x27;to&#x27;] == &#x27;mobi&#x27;
</code></li>
<li class="pre-context-line"><code> manifest[&#x27;to&#x27;] = &#x27;epub&#x27;
</code></li>
<li class="pre-context-line"><code> manifest.write(&#x27;manifest.yml&#x27;)
</code></li>
<li class="pre-context-line"><code> epub = DocverterServer::Runner::Pandoc.new(&#x27;.&#x27;).run
</code></li>
</ol>
<ol start="22" class="context" id="7"
onclick="toggle(7);">
<li class="context-line" id="context-7"><code> @output_filename = DocverterServer::Runner::Calibre.new(directory, epub).run</code></li>
</ol>
<ol start="23" class="post-context"
id="post-7" onclick="toggle(7);">
<li class="post-context-line"><code> else
</code></li>
<li class="post-context-line"><code> @output_filename = DocverterServer::Runner::Pandoc.new(directory).run
</code></li>
<li class="post-context-line"><code> end
</code></li>
<li class="post-context-line"><code> @output_filename
</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 app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;runner&#x2F;base.rb</code> in
<code><strong>with_manifest</strong></code>
</li>
<li class="code app">
<ol start="24"
class="pre-context" id="pre-8"
onclick="toggle(8);">
<li class="pre-context-line"><code> if $?.exitstatus != 0
</code></li>
<li class="pre-context-line"><code> raise output
</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 with_manifest
</code></li>
<li class="pre-context-line"><code> Dir.chdir(directory) do
</code></li>
</ol>
<ol start="31" class="context" id="8"
onclick="toggle(8);">
<li class="context-line" id="context-8"><code> yield DocverterServer::Manifest.load_file(&quot;manifest.yml&quot;)</code></li>
</ol>
<ol start="32" class="post-context"
id="post-8" onclick="toggle(8);">
<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>
<li class="post-context-line"><code>end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;runner&#x2F;base.rb</code> in
<code><strong>with_manifest</strong></code>
</li>
<li class="code app">
<ol start="23"
class="pre-context" id="pre-10"
onclick="toggle(10);">
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code> if $?.exitstatus != 0
</code></li>
<li class="pre-context-line"><code> raise output
</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 with_manifest
</code></li>
</ol>
<ol start="30" class="context" id="10"
onclick="toggle(10);">
<li class="context-line" id="context-10"><code> Dir.chdir(directory) do</code></li>
</ol>
<ol start="31" class="post-context"
id="post-10" onclick="toggle(10);">
<li class="post-context-line"><code> yield DocverterServer::Manifest.load_file(&quot;manifest.yml&quot;)
</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>
<li class="post-context-line"><code>end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;conversion.rb</code> in
<code><strong>run</strong></code>
</li>
<li class="code app">
<ol start="1"
class="pre-context" id="pre-11"
onclick="toggle(11);">
<li class="pre-context-line"><code>class DocverterServer::Conversion &lt; DocverterServer::Runner::Base
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> def run
</code></li>
</ol>
<ol start="4" class="context" id="11"
onclick="toggle(11);">
<li class="context-line" id="context-11"><code> with_manifest do |manifest|</code></li>
</ol>
<ol start="5" class="post-context"
id="post-11" onclick="toggle(11);">
<li class="post-context-line"><code> manifest.validate!(directory)
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> if manifest[&#x27;to&#x27;] == &#x27;pdf&#x27;
</code></li>
<li class="post-context-line"><code> manifest[&#x27;to&#x27;] = &#x27;html&#x27;
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> manifest.write(&#x27;manifest.yml&#x27;)
</code></li>
<li class="post-context-line"><code>
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;app.rb</code> in
<code><strong>POST &#x2F;convert</strong></code>
</li>
<li class="code app">
<ol start="27"
class="pre-context" id="pre-12"
onclick="toggle(12);">
<li class="pre-context-line"><code> val = val.gsub(&quot;&#x27;&quot;, &#x27;&#x27;) if val.is_a?(String)
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> manifest[key] = val
</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> manifest.write(&#x27;manifest.yml&#x27;)
</code></li>
<li class="pre-context-line"><code>
</code></li>
</ol>
<ol start="34" class="context" id="12"
onclick="toggle(12);">
<li class="context-line" id="context-12"><code> output_file = DocverterServer::Conversion.new(dir).run</code></li>
</ol>
<ol start="35" class="post-context"
id="post-12" onclick="toggle(12);">
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> content_type(DocverterServer::ConversionTypes.mime_type(manifest[&#x27;to&#x27;]))
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> @output = nil
</code></li>
<li class="post-context-line"><code> File.open(output_file) do |f|
</code></li>
<li class="post-context-line"><code> @output = f.read
</code></li>
<li class="post-context-line"><code> end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info app">
<code>&#x2F;app&#x2F;lib&#x2F;docverter-server&#x2F;app.rb</code> in
<code><strong>POST &#x2F;convert</strong></code>
</li>
<li class="code app">
<ol start="2"
class="pre-context" id="pre-14"
onclick="toggle(14);">
<li class="pre-context-line"><code>require &#x27;fileutils&#x27;
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code>class DocverterServer::App &lt; Sinatra::Base
</code></li>
<li class="pre-context-line"><code> post &#x27;&#x2F;convert&#x27; do
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> dir = Dir.mktmpdir
</code></li>
<li class="pre-context-line"><code>
</code></li>
</ol>
<ol start="9" class="context" id="14"
onclick="toggle(14);">
<li class="context-line" id="context-14"><code> Dir.chdir(dir) do</code></li>
</ol>
<ol start="10" class="post-context"
id="post-14" onclick="toggle(14);">
<li class="post-context-line"><code> manifest = DocverterServer::Manifest.new
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> input_files = params.delete(&#x27;input_files&#x27;) || []
</code></li>
<li class="post-context-line"><code> other_files = params.delete(&#x27;other_files&#x27;) || []
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> input_files.each do |upload|
</code></li>
<li class="post-context-line"><code> FileUtils.cp upload[:tempfile].path, upload[:filename]
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>compile!</strong></code>
</li>
<li class="code framework">
<ol start="1258"
class="pre-context" id="pre-16"
onclick="toggle(16);">
<li class="pre-context-line"><code> method_name = &quot;#{verb} #{path}&quot;
</code></li>
<li class="pre-context-line"><code> unbound_method = generate_method(method_name, &amp;block)
</code></li>
<li class="pre-context-line"><code> pattern, keys = compile path
</code></li>
<li class="pre-context-line"><code> conditions, @conditions = @conditions, []
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> [ pattern, keys, conditions, block.arity != 0 ?
</code></li>
<li class="pre-context-line"><code> proc { |a,p| unbound_method.bind(a).call(*p) } :
</code></li>
</ol>
<ol start="1265" class="context" id="16"
onclick="toggle(16);">
<li class="context-line" id="context-16"><code> proc { |a,p| unbound_method.bind(a).call } ]</code></li>
</ol>
<ol start="1266" class="post-context"
id="post-16" onclick="toggle(16);">
<li class="post-context-line"><code> end
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> def compile(path)
</code></li>
<li class="post-context-line"><code> keys = []
</code></li>
<li class="post-context-line"><code> if path.respond_to? :to_str
</code></li>
<li class="post-context-line"><code> pattern = path.to_str.gsub(&#x2F;[^\?\%\\\&#x2F;\:\*\w]&#x2F;) { |c| encoded(c) }
</code></li>
<li class="post-context-line"><code> pattern.gsub!(&#x2F;((:\w+)|\*)&#x2F;) do |match|
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>route!</strong></code>
</li>
<li class="code framework">
<ol start="828"
class="pre-context" id="pre-18"
onclick="toggle(18);">
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> # Run routes defined on the class and all superclasses.
</code></li>
<li class="pre-context-line"><code> def route!(base = settings, pass_block=nil)
</code></li>
<li class="pre-context-line"><code> if routes = base.routes[@request.request_method]
</code></li>
<li class="pre-context-line"><code> routes.each do |pattern, keys, conditions, block|
</code></li>
<li class="pre-context-line"><code> pass_block = process_route(pattern, keys, conditions) do |*args|
</code></li>
</ol>
<ol start="835" class="context" id="18"
onclick="toggle(18);">
<li class="context-line" id="context-18"><code> route_eval { block[*args] }</code></li>
</ol>
<ol start="836" class="post-context"
id="post-18" onclick="toggle(18);">
<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> # Run routes defined in superclass.
</code></li>
<li class="post-context-line"><code> if base.superclass.respond_to?(:routes)
</code></li>
<li class="post-context-line"><code> return route!(base.superclass, pass_block)
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>route_eval</strong></code>
</li>
<li class="code framework">
<ol start="844"
class="pre-context" id="pre-19"
onclick="toggle(19);">
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> route_eval(&amp;pass_block) if pass_block
</code></li>
<li class="pre-context-line"><code> route_missing
</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 a route block and throw :halt with the result.
</code></li>
<li class="pre-context-line"><code> def route_eval
</code></li>
</ol>
<ol start="851" class="context" id="19"
onclick="toggle(19);">
<li class="context-line" id="context-19"><code> throw :halt, yield</code></li>
</ol>
<ol start="852" class="post-context"
id="post-19" onclick="toggle(19);">
<li class="post-context-line"><code> end
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> # If the current request matches pattern and conditions, fill params
</code></li>
<li class="post-context-line"><code> # with keys and call the given block.
</code></li>
<li class="post-context-line"><code> # Revert params afterwards.
</code></li>
<li class="post-context-line"><code> #
</code></li>
<li class="post-context-line"><code> # Returns pass block.
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>route!</strong></code>
</li>
<li class="code framework">
<ol start="828"
class="pre-context" id="pre-20"
onclick="toggle(20);">
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> # Run routes defined on the class and all superclasses.
</code></li>
<li class="pre-context-line"><code> def route!(base = settings, pass_block=nil)
</code></li>
<li class="pre-context-line"><code> if routes = base.routes[@request.request_method]
</code></li>
<li class="pre-context-line"><code> routes.each do |pattern, keys, conditions, block|
</code></li>
<li class="pre-context-line"><code> pass_block = process_route(pattern, keys, conditions) do |*args|
</code></li>
</ol>
<ol start="835" class="context" id="20"
onclick="toggle(20);">
<li class="context-line" id="context-20"><code> route_eval { block[*args] }</code></li>
</ol>
<ol start="836" class="post-context"
id="post-20" onclick="toggle(20);">
<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> # Run routes defined in superclass.
</code></li>
<li class="post-context-line"><code> if base.superclass.respond_to?(:routes)
</code></li>
<li class="post-context-line"><code> return route!(base.superclass, pass_block)
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>process_route</strong></code>
</li>
<li class="code framework">
<ol start="865"
class="pre-context" id="pre-21"
onclick="toggle(21);">
<li class="pre-context-line"><code> if values.any?
</code></li>
<li class="pre-context-line"><code> original, @params = params, params.merge(&#x27;splat&#x27; =&gt; [], &#x27;captures&#x27; =&gt; values)
</code></li>
<li class="pre-context-line"><code> keys.zip(values) { |k,v| Array === @params[k] ? @params[k] &lt;&lt; v : @params[k] = v if v }
</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> catch(:pass) do
</code></li>
<li class="pre-context-line"><code> conditions.each { |c| throw :pass if c.bind(self).call == false }
</code></li>
</ol>
<ol start="872" class="context" id="21"
onclick="toggle(21);">
<li class="context-line" id="context-21"><code> block ? block[self, values] : yield(self, values)</code></li>
</ol>
<ol start="873" class="post-context"
id="post-21" onclick="toggle(21);">
<li class="post-context-line"><code> end
</code></li>
<li class="post-context-line"><code> ensure
</code></li>
<li class="post-context-line"><code> @params = original if original
</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> # No matching route was found or all routes passed. The default
</code></li>
<li class="post-context-line"><code> # implementation is to forward the request downstream when running
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>process_route</strong></code>
</li>
<li class="code framework">
<ol start="863"
class="pre-context" id="pre-23"
onclick="toggle(23);">
<li class="pre-context-line"><code> values += match.captures.to_a.map { |v| force_encoding URI.decode(v) if v }
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> if values.any?
</code></li>
<li class="pre-context-line"><code> original, @params = params, params.merge(&#x27;splat&#x27; =&gt; [], &#x27;captures&#x27; =&gt; values)
</code></li>
<li class="pre-context-line"><code> keys.zip(values) { |k,v| Array === @params[k] ? @params[k] &lt;&lt; v : @params[k] = v if v }
</code></li>
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code>
</code></li>
</ol>
<ol start="870" class="context" id="23"
onclick="toggle(23);">
<li class="context-line" id="context-23"><code> catch(:pass) do</code></li>
</ol>
<ol start="871" class="post-context"
id="post-23" onclick="toggle(23);">
<li class="post-context-line"><code> conditions.each { |c| throw :pass if c.bind(self).call == false }
</code></li>
<li class="post-context-line"><code> block ? block[self, values] : yield(self, values)
</code></li>
<li class="post-context-line"><code> end
</code></li>
<li class="post-context-line"><code> ensure
</code></li>
<li class="post-context-line"><code> @params = original if original
</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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>route!</strong></code>
</li>
<li class="code framework">
<ol start="827"
class="pre-context" id="pre-24"
onclick="toggle(24);">
<li class="pre-context-line"><code> base.filters[type].each { |args| process_route(*args) }
</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 routes defined on the class and all superclasses.
</code></li>
<li class="pre-context-line"><code> def route!(base = settings, pass_block=nil)
</code></li>
<li class="pre-context-line"><code> if routes = base.routes[@request.request_method]
</code></li>
<li class="pre-context-line"><code> routes.each do |pattern, keys, conditions, block|
</code></li>
</ol>
<ol start="834" class="context" id="24"
onclick="toggle(24);">
<li class="context-line" id="context-24"><code> pass_block = process_route(pattern, keys, conditions) do |*args|</code></li>
</ol>
<ol start="835" class="post-context"
id="post-24" onclick="toggle(24);">
<li class="post-context-line"><code> route_eval { block[*args] }
</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>
</code></li>
<li class="post-context-line"><code> # Run routes defined in superclass.
</code></li>
<li class="post-context-line"><code> if base.superclass.respond_to?(:routes)
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>route!</strong></code>
</li>
<li class="code framework">
<ol start="826"
class="pre-context" id="pre-26"
onclick="toggle(26);">
<li class="pre-context-line"><code> filter! type, base.superclass if base.superclass.respond_to?(:filters)
</code></li>
<li class="pre-context-line"><code> base.filters[type].each { |args| process_route(*args) }
</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 routes defined on the class and all superclasses.
</code></li>
<li class="pre-context-line"><code> def route!(base = settings, pass_block=nil)
</code></li>
<li class="pre-context-line"><code> if routes = base.routes[@request.request_method]
</code></li>
</ol>
<ol start="833" class="context" id="26"
onclick="toggle(26);">
<li class="context-line" id="context-26"><code> routes.each do |pattern, keys, conditions, block|</code></li>
</ol>
<ol start="834" class="post-context"
id="post-26" onclick="toggle(26);">
<li class="post-context-line"><code> pass_block = process_route(pattern, keys, conditions) do |*args|
</code></li>
<li class="post-context-line"><code> route_eval { block[*args] }
</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>
</code></li>
<li class="post-context-line"><code> # Run routes defined in superclass.
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>dispatch!</strong></code>
</li>
<li class="code framework">
<ol start="929"
class="pre-context" id="pre-27"
onclick="toggle(27);">
<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> # Dispatch a request with error handling.
</code></li>
<li class="pre-context-line"><code> def dispatch!
</code></li>
<li class="pre-context-line"><code> static! if settings.static? &amp;&amp; (request.get? || request.head?)
</code></li>
<li class="pre-context-line"><code> filter! :before
</code></li>
</ol>
<ol start="936" class="context" id="27"
onclick="toggle(27);">
<li class="context-line" id="context-27"><code> route!</code></li>
</ol>
<ol start="937" class="post-context"
id="post-27" onclick="toggle(27);">
<li class="post-context-line"><code> rescue ::Exception =&gt; boom
</code></li>
<li class="post-context-line"><code> handle_exception!(boom)
</code></li>
<li class="post-context-line"><code> ensure
</code></li>
<li class="post-context-line"><code> filter! :after unless env[&#x27;sinatra.static_file&#x27;]
</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> # Error handling during requests.
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>call!</strong></code>
</li>
<li class="code framework">
<ol start="762"
class="pre-context" id="pre-28"
onclick="toggle(28);">
<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[&#x27;Content-Type&#x27;] = nil
</code></li>
</ol>
<ol start="769" class="context" id="28"
onclick="toggle(28);">
<li class="context-line" id="context-28"><code> invoke { dispatch! }</code></li>
</ol>
<ol start="770" class="post-context"
id="post-28" onclick="toggle(28);">
<li class="post-context-line"><code> invoke { error_block!(response.status) }
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> unless @response[&#x27;Content-Type&#x27;]
</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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>invoke</strong></code>
</li>
<li class="code framework">
<ol start="914"
class="pre-context" id="pre-29"
onclick="toggle(29);">
<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 &#x27;throw :halt&#x27; support and apply result to the response.
</code></li>
<li class="pre-context-line"><code> def invoke
</code></li>
</ol>
<ol start="921" class="context" id="29"
onclick="toggle(29);">
<li class="context-line" id="context-29"><code> res = catch(:halt) { yield }</code></li>
</ol>
<ol start="922" class="post-context"
id="post-29" onclick="toggle(29);">
<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> 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>
<li class="post-context-line"><code> body res
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>invoke</strong></code>
</li>
<li class="code framework">
<ol start="914"
class="pre-context" id="pre-31"
onclick="toggle(31);">
<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 &#x27;throw :halt&#x27; support and apply result to the response.
</code></li>
<li class="pre-context-line"><code> def invoke
</code></li>
</ol>
<ol start="921" class="context" id="31"
onclick="toggle(31);">
<li class="context-line" id="context-31"><code> res = catch(:halt) { yield }</code></li>
</ol>
<ol start="922" class="post-context"
id="post-31" onclick="toggle(31);">
<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> 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>
<li class="post-context-line"><code> body res
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>call!</strong></code>
</li>
<li class="code framework">
<ol start="762"
class="pre-context" id="pre-32"
onclick="toggle(32);">
<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[&#x27;Content-Type&#x27;] = nil
</code></li>
</ol>
<ol start="769" class="context" id="32"
onclick="toggle(32);">
<li class="context-line" id="context-32"><code> invoke { dispatch! }</code></li>
</ol>
<ol start="770" class="post-context"
id="post-32" onclick="toggle(32);">
<li class="post-context-line"><code> invoke { error_block!(response.status) }
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> unless @response[&#x27;Content-Type&#x27;]
</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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code framework">
<ol start="748"
class="pre-context" id="pre-33"
onclick="toggle(33);">
<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="755" class="context" id="33"
onclick="toggle(33);">
<li class="context-line" id="context-33"><code> dup.call!(env)</code></li>
</ol>
<ol start="756" 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> 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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-protection-1.2.0&#x2F;lib&#x2F;rack&#x2F;protection&#x2F;xss_header.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="15"
class="pre-context" id="pre-34"
onclick="toggle(34);">
<li class="pre-context-line"><code> default_options :xss_mode =&gt; :block
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> def header
</code></li>
<li class="pre-context-line"><code> { &#x27;X-XSS-Protection&#x27; =&gt; &quot;1; mode=#{options[:xss_mode]}&quot; }
</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="22" 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="23" class="post-context"
id="post-34" onclick="toggle(34);">
<li class="post-context-line"><code> [status, header.merge(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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-protection-1.2.0&#x2F;lib&#x2F;rack&#x2F;protection&#x2F;path_traversal.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="9"
class="pre-context" id="pre-35"
onclick="toggle(35);">
<li class="pre-context-line"><code> #
</code></li>
<li class="pre-context-line"><code> # Unescapes &#x27;&#x2F;&#x27; and &#x27;.&#x27;, expands +path_info+.
</code></li>
<li class="pre-context-line"><code> # Thus &lt;tt&gt;GET &#x2F;foo&#x2F;%2e%2e%2fbar&lt;&#x2F;tt&gt; becomes &lt;tt&gt;GET &#x2F;bar&lt;&#x2F;tt&gt;.
</code></li>
<li class="pre-context-line"><code> class PathTraversal &lt; Base
</code></li>
<li class="pre-context-line"><code> def call(env)
</code></li>
<li class="pre-context-line"><code> path_was = env[&quot;PATH_INFO&quot;]
</code></li>
<li class="pre-context-line"><code> env[&quot;PATH_INFO&quot;] = cleanup path_was if path_was
</code></li>
</ol>
<ol start="16" class="context" id="35"
onclick="toggle(35);">
<li class="context-line" id="context-35"><code> app.call env</code></li>
</ol>
<ol start="17" class="post-context"
id="post-35" onclick="toggle(35);">
<li class="post-context-line"><code> ensure
</code></li>
<li class="post-context-line"><code> env[&quot;PATH_INFO&quot;] = 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(&#x27;%2e&#x27;, &#x27;.&#x27;).gsub(&#x27;%2f&#x27;, &#x27;&#x2F;&#x27;)
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-protection-1.2.0&#x2F;lib&#x2F;rack&#x2F;protection&#x2F;json_csrf.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="10"
class="pre-context" id="pre-36"
onclick="toggle(36);">
<li class="pre-context-line"><code> # JSON GET APIs are vulnerable to being embedded as JavaScript while the
</code></li>
<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 &lt; 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>
</ol>
<ol start="17" 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="18" class="post-context"
id="post-36" onclick="toggle(36);">
<li class="post-context-line"><code> if headers[&#x27;Content-Type&#x27;].to_s.split(&#x27;;&#x27;, 2).first =~ &#x2F;^\s*application\&#x2F;json\s*$&#x2F;
</code></li>
<li class="post-context-line"><code> if referrer(env) != Request.new(env).host
</code></li>
<li class="post-context-line"><code> result = react(env)
</code></li>
<li class="post-context-line"><code> warn env, &quot;attack prevented by #{self.class}&quot;
</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> result or [status, headers, body]
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-protection-1.2.0&#x2F;lib&#x2F;rack&#x2F;protection&#x2F;base.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="40"
class="pre-context" id="pre-37"
onclick="toggle(37);">
<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, &quot;attack prevented by #{self.class}&quot;
</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="47" class="context" id="37"
onclick="toggle(37);">
<li class="context-line" id="context-37"><code> result or app.call(env)</code></li>
</ol>
<ol start="48" 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 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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-protection-1.2.0&#x2F;lib&#x2F;rack&#x2F;protection&#x2F;xss_header.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="15"
class="pre-context" id="pre-38"
onclick="toggle(38);">
<li class="pre-context-line"><code> default_options :xss_mode =&gt; :block
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> def header
</code></li>
<li class="pre-context-line"><code> { &#x27;X-XSS-Protection&#x27; =&gt; &quot;1; mode=#{options[:xss_mode]}&quot; }
</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="22" class="context" id="38"
onclick="toggle(38);">
<li class="context-line" id="context-38"><code> status, headers, body = @app.call(env)</code></li>
</ol>
<ol start="23" class="post-context"
id="post-38" onclick="toggle(38);">
<li class="post-context-line"><code> [status, header.merge(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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-1.4.1&#x2F;lib&#x2F;rack&#x2F;nulllogger.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="2"
class="pre-context" id="pre-39"
onclick="toggle(39);">
<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[&#x27;rack.logger&#x27;] = self
</code></li>
</ol>
<ol start="9" class="context" id="39"
onclick="toggle(39);">
<li class="context-line" id="context-39"><code> @app.call(env)</code></li>
</ol>
<ol start="10" class="post-context"
id="post-39" onclick="toggle(39);">
<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, &amp;block); end
</code></li>
<li class="post-context-line"><code> def debug(progname = nil, &amp;block); end
</code></li>
<li class="post-context-line"><code> def warn(progname = nil, &amp;block); end
</code></li>
<li class="post-context-line"><code> def error(progname = nil, &amp;block); end
</code></li>
<li class="post-context-line"><code> def fatal(progname = nil, &amp;block); end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-1.4.1&#x2F;lib&#x2F;rack&#x2F;head.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="2"
class="pre-context" id="pre-40"
onclick="toggle(40);">
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code>class Head
</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="9" class="context" id="40"
onclick="toggle(40);">
<li class="context-line" id="context-40"><code> status, headers, body = @app.call(env)</code></li>
</ol>
<ol start="10" class="post-context"
id="post-40" onclick="toggle(40);">
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> if env[&quot;REQUEST_METHOD&quot;] == &quot;HEAD&quot;
</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>
<li class="post-context-line"><code> end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info framework">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;showexceptions.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code framework">
<ol start="14"
class="pre-context" id="pre-41"
onclick="toggle(41);">
<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="41"
onclick="toggle(41);">
<li class="context-line" id="context-41"><code> @app.call(env)</code></li>
</ol>
<ol start="22" class="post-context"
id="post-41" onclick="toggle(41);">
<li class="post-context-line"><code> rescue Exception =&gt; e
</code></li>
<li class="post-context-line"><code> errors, env[&quot;rack.errors&quot;] = env[&quot;rack.errors&quot;], @@eats_errors
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> if respond_to?(:prefers_plain_text?) and prefers_plain_text?(env)
</code></li>
<li class="post-context-line"><code> content_type = &quot;text&#x2F;plain&quot;
</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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code framework">
<ol start="92"
class="pre-context" id="pre-42"
onclick="toggle(42);">
<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 &lt; Struct.new(:app)
</code></li>
<li class="pre-context-line"><code> def call(env)
</code></li>
</ol>
<ol start="99" class="context" id="42"
onclick="toggle(42);">
<li class="context-line" id="context-42"><code> result, callback = app.call(env), env[&#x27;async.callback&#x27;]</code></li>
</ol>
<ol start="100" class="post-context"
id="post-42" onclick="toggle(42);">
<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 system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-1.4.1&#x2F;lib&#x2F;rack&#x2F;lint.rb</code> in
<code><strong>_call</strong></code>
</li>
<li class="code system">
<ol start="41"
class="pre-context" id="pre-43"
onclick="toggle(43);">
<li class="pre-context-line"><code> assert(&quot;No env given&quot;) { 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[&#x27;rack.input&#x27;] = InputWrapper.new(env[&#x27;rack.input&#x27;])
</code></li>
<li class="pre-context-line"><code> env[&#x27;rack.errors&#x27;] = ErrorWrapper.new(env[&#x27;rack.errors&#x27;])
</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="48" class="context" id="43"
onclick="toggle(43);">
<li class="context-line" id="context-43"><code> status, headers, @body = @app.call(env)</code></li>
</ol>
<ol start="49" class="post-context"
id="post-43" onclick="toggle(43);">
<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> ## and the *body*.
</code></li>
<li class="post-context-line"><code> check_content_type status, headers
</code></li>
<li class="post-context-line"><code> check_content_length status, headers
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-1.4.1&#x2F;lib&#x2F;rack&#x2F;lint.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="29"
class="pre-context" id="pre-44"
onclick="toggle(44);">
<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="36" class="context" id="44"
onclick="toggle(44);">
<li class="context-line" id="context-44"><code> dup._call(env)</code></li>
</ol>
<ol start="37" class="post-context"
id="post-44" onclick="toggle(44);">
<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(&quot;No env given&quot;) { 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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-1.4.1&#x2F;lib&#x2F;rack&#x2F;showexceptions.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="17"
class="pre-context" id="pre-45"
onclick="toggle(45);">
<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="45"
onclick="toggle(45);">
<li class="context-line" id="context-45"><code> @app.call(env)</code></li>
</ol>
<ol start="25" class="post-context"
id="post-45" onclick="toggle(45);">
<li class="post-context-line"><code> rescue StandardError, LoadError, SyntaxError =&gt; 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[&quot;rack.errors&quot;].puts(exception_string)
</code></li>
<li class="post-context-line"><code> env[&quot;rack.errors&quot;].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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-1.4.1&#x2F;lib&#x2F;rack&#x2F;commonlogger.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="13"
class="pre-context" id="pre-46"
onclick="toggle(46);">
<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="20" class="context" id="46"
onclick="toggle(46);">
<li class="context-line" id="context-46"><code> status, header, body = @app.call(env)</code></li>
</ol>
<ol start="21" class="post-context"
id="post-46" onclick="toggle(46);">
<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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;sinatra-1.3.3&#x2F;lib&#x2F;sinatra&#x2F;base.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code framework">
<ol start="129"
class="pre-context" id="pre-47"
onclick="toggle(47);">
<li class="pre-context-line"><code> env[&#x27;sinatra.commonlogger&#x27;] ? @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[&#x27;sinatra.commonlogger&#x27;] = true
</code></li>
</ol>
<ol start="136" class="context" id="47"
onclick="toggle(47);">
<li class="context-line" id="context-47"><code> call_without_check(env)</code></li>
</ol>
<ol start="137" class="post-context"
id="post-47" onclick="toggle(47);">
<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 &lt; NameError #:nodoc:
</code></li>
<li class="post-context-line"><code> def code ; 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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;mizuno-0.6.4&#x2F;lib&#x2F;mizuno&#x2F;rack&#x2F;chunked.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="9"
class="pre-context" id="pre-48"
onclick="toggle(48);">
<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="16" class="context" id="48"
onclick="toggle(48);">
<li class="context-line" id="context-48"><code> @app.call(env)</code></li>
</ol>
<ol start="17" 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>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;rack-1.4.1&#x2F;lib&#x2F;rack&#x2F;content_length.rb</code> in
<code><strong>call</strong></code>
</li>
<li class="code system">
<ol start="7"
class="pre-context" id="pre-49"
onclick="toggle(49);">
<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="49"
onclick="toggle(49);">
<li class="context-line" id="context-49"><code> status, headers, body = @app.call(env)</code></li>
</ol>
<ol start="15" 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 !STATUS_WITH_NO_ENTITY_BODY.include?(status.to_i) &amp;&amp;
</code></li>
<li class="post-context-line"><code> !headers[&#x27;Content-Length&#x27;] &amp;&amp;
</code></li>
<li class="post-context-line"><code> !headers[&#x27;Transfer-Encoding&#x27;] &amp;&amp;
</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>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;mizuno-0.6.4&#x2F;lib&#x2F;mizuno&#x2F;rack_servlet.rb</code> in
<code><strong>service</strong></code>
</li>
<li class="code system">
<ol start="76"
class="pre-context" id="pre-50"
onclick="toggle(50);">
<li class="pre-context-line"><code> servlet_response = continuation.getServletResponse
</code></li>
<li class="pre-context-line"><code> rack_to_servlet(rack_response, servlet_response) \
</code></li>
<li class="pre-context-line"><code> and continuation.complete
</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> # Execute the Rack request.
</code></li>
<li class="pre-context-line"><code> catch(:async) do
</code></li>
</ol>
<ol start="83" class="context" id="50"
onclick="toggle(50);">
<li class="context-line" id="context-50"><code> rack_response = @app.call(env)</code></li>
</ol>
<ol start="84" class="post-context"
id="post-50" onclick="toggle(50);">
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> # For apps that don&#x27;t throw :async.
</code></li>
<li class="post-context-line"><code> unless(rack_response[0] == -1)
</code></li>
<li class="post-context-line"><code> # Nope, nothing asynchronous here.
</code></li>
<li class="post-context-line"><code> rack_to_servlet(rack_response, response)
</code></li>
<li class="post-context-line"><code> return
</code></li>
<li class="post-context-line"><code> end
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;mizuno-0.6.4&#x2F;lib&#x2F;mizuno&#x2F;rack_servlet.rb</code> in
<code><strong>service</strong></code>
</li>
<li class="code system">
<ol start="75"
class="pre-context" id="pre-52"
onclick="toggle(52);">
<li class="pre-context-line"><code> env[&#x27;async.callback&#x27;] = Proc.new do |rack_response|
</code></li>
<li class="pre-context-line"><code> servlet_response = continuation.getServletResponse
</code></li>
<li class="pre-context-line"><code> rack_to_servlet(rack_response, servlet_response) \
</code></li>
<li class="pre-context-line"><code> and continuation.complete
</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> # Execute the Rack request.
</code></li>
</ol>
<ol start="82" class="context" id="52"
onclick="toggle(52);">
<li class="context-line" id="context-52"><code> catch(:async) do</code></li>
</ol>
<ol start="83" class="post-context"
id="post-52" onclick="toggle(52);">
<li class="post-context-line"><code> rack_response = @app.call(env)
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> # For apps that don&#x27;t throw :async.
</code></li>
<li class="post-context-line"><code> unless(rack_response[0] == -1)
</code></li>
<li class="post-context-line"><code> # Nope, nothing asynchronous here.
</code></li>
<li class="post-context-line"><code> rack_to_servlet(rack_response, response)
</code></li>
<li class="post-context-line"><code> return
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;mizuno-0.6.4&#x2F;lib&#x2F;mizuno&#x2F;rack_servlet.rb</code> in
<code><strong>handle_exceptions</strong></code>
</li>
<li class="code system">
<ol start="240"
class="pre-context" id="pre-53"
onclick="toggle(53);">
<li class="pre-context-line"><code> end
</code></li>
<li class="pre-context-line"><code>
</code></li>
<li class="pre-context-line"><code> #
</code></li>
<li class="pre-context-line"><code> # Handle exceptions, returning a generic 500 error response.
</code></li>
<li class="pre-context-line"><code> #
</code></li>
<li class="pre-context-line"><code> def handle_exceptions(response)
</code></li>
<li class="pre-context-line"><code> begin
</code></li>
</ol>
<ol start="247" class="context" id="53"
onclick="toggle(53);">
<li class="context-line" id="context-53"><code> yield</code></li>
</ol>
<ol start="248" class="post-context"
id="post-53" onclick="toggle(53);">
<li class="post-context-line"><code> rescue =&gt; error
</code></li>
<li class="post-context-line"><code> message = &quot;Exception: #{error}&quot;
</code></li>
<li class="post-context-line"><code> message &lt;&lt; &quot;\n#{error.backtrace.join(&quot;\n&quot;)}&quot; \
</code></li>
<li class="post-context-line"><code> if (error.respond_to?(:backtrace))
</code></li>
<li class="post-context-line"><code> Server.logger.error(message)
</code></li>
<li class="post-context-line"><code> return if response.isCommitted
</code></li>
<li class="post-context-line"><code> response.reset
</code></li>
</ol>
<div class="clear"></div>
</li>
<li class="frame-info system">
<code>&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;mizuno-0.6.4&#x2F;lib&#x2F;mizuno&#x2F;rack_servlet.rb</code> in
<code><strong>service</strong></code>
</li>
<li class="code system">
<ol start="46"
class="pre-context" id="pre-54"
onclick="toggle(54);">
<li class="pre-context-line"><code> # parameter in env to the Rack application. If we catch an
</code></li>
<li class="pre-context-line"><code> # :async symbol thrown by the app, we initiate a Jetty continuation.
</code></li>
<li class="pre-context-line"><code> #
</code></li>
<li class="pre-context-line"><code> # When &#x27;async.callback&#x27; gets a response with empty headers and an
</code></li>
<li class="pre-context-line"><code> # empty body, we declare the async response finished.
</code></li>
<li class="pre-context-line"><code> #
</code></li>
<li class="pre-context-line"><code> def service(request, response)
</code></li>
</ol>
<ol start="53" class="context" id="54"
onclick="toggle(54);">
<li class="context-line" id="context-54"><code> handle_exceptions(response) do</code></li>
</ol>
<ol start="54" class="post-context"
id="post-54" onclick="toggle(54);">
<li class="post-context-line"><code> # Turn the ServletRequest into a Rack env hash
</code></li>
<li class="post-context-line"><code> env = servlet_to_rack(request)
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> # Handle asynchronous responses via Servlet continuations.
</code></li>
<li class="post-context-line"><code> continuation = ContinuationSupport.getContinuation(request)
</code></li>
<li class="post-context-line"><code>
</code></li>
<li class="post-context-line"><code> # If this is an expired connection, do nothing.
</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>from</td>
<td class="code"><div>&quot;markdown&quot;</div></td>
</tr>
<tr>
<td>input_files</td>
<td class="code"><div>[{:filename=&gt;&quot;temp20130918-29686-jujrl9&quot;, :type=&gt;&quot;text&#x2F;plain&quot;, :name=&gt;&quot;input_files[]&quot;, :tempfile=&gt;#&lt;Tempfile:&#x2F;tmp&#x2F;RackMultipart20130918-2-18bwgkv&gt;, :head=&gt;&quot;Content-Disposition: form-data; name=\&quot;input_files[]\&quot;; filename=\&quot;temp20130918-29686-jujrl9\&quot;\r\nContent-Type: text&#x2F;plain\r\n&quot;}]</div></td>
</tr>
<tr>
<td>to</td>
<td class="code"><div>&quot;mobi&quot;</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>5379</div></td>
</tr>
<tr>
<td>CONTENT_TYPE</td>
<td class="code"><div>multipart&#x2F;form-data; boundary=363581</div></td>
</tr>
<tr>
<td>HTTP_ACCEPT</td>
<td class="code"><div>*&#x2F;*; q=0.5, application&#x2F;xml</div></td>
</tr>
<tr>
<td>HTTP_ACCEPT_ENCODING</td>
<td class="code"><div>gzip, deflate</div></td>
</tr>
<tr>
<td>HTTP_CONNECTION</td>
<td class="code"><div>close</div></td>
</tr>
<tr>
<td>HTTP_HOST</td>
<td class="code"><div>mydocverterserver.herokuapp.com</div></td>
</tr>
<tr>
<td>HTTP_USER_AGENT</td>
<td class="code"><div>Docverter&#x2F;v1 RubyBindings&#x2F;1.0.0</div></td>
</tr>
<tr>
<td>HTTP_VERSION</td>
<td class="code"><div>HTTP&#x2F;1.1</div></td>
</tr>
<tr>
<td>HTTP_X_FORWARDED_FOR</td>
<td class="code"><div>98.209.4.207</div></td>
</tr>
<tr>
<td>HTTP_X_FORWARDED_PORT</td>
<td class="code"><div>80</div></td>
</tr>
<tr>
<td>HTTP_X_FORWARDED_PROTO</td>
<td class="code"><div>http</div></td>
</tr>
<tr>
<td>HTTP_X_REQUEST_START</td>
<td class="code"><div>1379546780879</div></td>
</tr>
<tr>
<td>PATH_INFO</td>
<td class="code"><div>&#x2F;convert</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.240.31.96</div></td>
</tr>
<tr>
<td>REMOTE_HOST</td>
<td class="code"><div>10.240.31.96</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>&#x2F;convert</div></td>
</tr>
<tr>
<td>REQUEST_URI</td>
<td class="code"><div>http:&#x2F;&#x2F;mydocverterserver.herokuapp.com&#x2F;convert?</div></td>
</tr>
<tr>
<td>SCRIPT_NAME</td>
<td class="code"><div></div></td>
</tr>
<tr>
<td>SERVER_NAME</td>
<td class="code"><div>mydocverterserver.herokuapp.com</div></td>
</tr>
<tr>
<td>SERVER_PORT</td>
<td class="code"><div>80</div></td>
</tr>
<tr>
<td>SERVER_PROTOCOL</td>
<td class="code"><div>HTTP&#x2F;1.1</div></td>
</tr>
<tr>
<td>async.callback</td>
<td class="code"><div>#&lt;Proc:0x35d4ea83@&#x2F;app&#x2F;vendor&#x2F;bundle&#x2F;jruby&#x2F;1.9&#x2F;gems&#x2F;mizuno-0.6.4&#x2F;lib&#x2F;mizuno&#x2F;rack_servlet.rb:75&gt;</div></td>
</tr>
<tr>
<td>rack.errors</td>
<td class="code"><div>#&lt;Object:0x25299a21&gt;</div></td>
</tr>
<tr>
<td>rack.input</td>
<td class="code"><div>#&lt;Rack::Lint::InputWrapper:0x7f34784e @input=#&lt;IO:fd 173&gt;&gt;</div></td>
</tr>
<tr>
<td>rack.java.servlet</td>
<td class="code"><div>true</div></td>
</tr>
<tr>
<td>rack.java.servlet.continuation</td>
<td class="code"><div>#&lt;Java::OrgEclipseJettyServer::AsyncContinuation:0x3bf214e6&gt;</div></td>
</tr>
<tr>
<td>rack.java.servlet.request</td>
<td class="code"><div>#&lt;Java::OrgEclipseJettyServer::Request:0x48b68391&gt;</div></td>
</tr>
<tr>
<td>rack.java.servlet.response</td>
<td class="code"><div>#&lt;Java::OrgEclipseJettyServer::Response:0x246c6665&gt;</div></td>
</tr>
<tr>
<td>rack.logger</td>
<td class="code"><div>#&lt;Rack::NullLogger:0x558ef8ff @app=#&lt;Rack::Protection::FrameOptions:0x1d7d593b @options={:reaction=&gt;:drop_session, :logging=&gt;true, :message=&gt;&quot;Forbidden&quot;, :encryptor=&gt;Digest::SHA1, :session_key=&gt;&quot;rack.session&quot;, :status=&gt;403, :allow_empty_referrer=&gt;true, :xss_mode=&gt;:block, :frame_options=&gt;:sameorigin, :except=&gt;[:session_hijacking, :remote_token]}, @app=#&lt;Rack::Protection::IPSpoofing:0x36a99af7 @options={:reaction=&gt;:drop_session, :logging=&gt;true, :message=&gt;&quot;Forbidden&quot;, :encryptor=&gt;Digest::SHA1, :session_key=&gt;&quot;rack.session&quot;, :status=&gt;403, :allow_empty_referrer=&gt;true, :except=&gt;[:session_hijacking, :remote_token]}, @app=#&lt;Rack::Protection::JsonCsrf:0x647188a0 @options={:reaction=&gt;:drop_session, :logging=&gt;true, :message=&gt;&quot;Forbidden&quot;, :encryptor=&gt;Digest::SHA1, :session_key=&gt;&quot;rack.session&quot;, :status=&gt;403, :allow_empty_referrer=&gt;true, :except=&gt;[:session_hijacking, :remote_token]}, @app=#&lt;Rack::Protection::PathTraversal:0xacc2bc5 @options={:reaction=&gt;:drop_session, :logging=&gt;true, :message=&gt;&quot;Forbidden&quot;, :encryptor=&gt;Digest::SHA1, :session_key=&gt;&quot;rack.session&quot;, :status=&gt;403, :allow_empty_referrer=&gt;true, :except=&gt;[:session_hijacking, :remote_token]}, @app=#&lt;Rack::Protection::XSSHeader:0x54396e3f @options={:reaction=&gt;:drop_session, :logging=&gt;true, :message=&gt;&quot;Forbidden&quot;, :encryptor=&gt;Digest::SHA1, :session_key=&gt;&quot;rack.session&quot;, :status=&gt;403, :allow_empty_referrer=&gt;true, :xss_mode=&gt;:block, :except=&gt;[:session_hijacking, :remote_token]}, @app=#&lt;DocverterServer::App:0x70c933e3 @app=nil, @template_cache=#&lt;Tilt::Cache:0x296db5ee @cache={}&gt;, @default_layout=:layout&gt;&gt;&gt;&gt;&gt;&gt;&gt;</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>{&quot;from&quot;=&gt;&quot;markdown&quot;, &quot;to&quot;=&gt;&quot;mobi&quot;, &quot;input_files&quot;=&gt;[{:filename=&gt;&quot;temp20130918-29686-jujrl9&quot;, :type=&gt;&quot;text&#x2F;plain&quot;, :name=&gt;&quot;input_files[]&quot;, :tempfile=&gt;#&lt;Tempfile:&#x2F;tmp&#x2F;RackMultipart20130918-2-18bwgkv&gt;, :head=&gt;&quot;Content-Disposition: form-data; name=\&quot;input_files[]\&quot;; filename=\&quot;temp20130918-29686-jujrl9\&quot;\r\nContent-Type: text&#x2F;plain\r\n&quot;}]}</div></td>
</tr>
<tr>
<td>rack.request.form_input</td>
<td class="code"><div>#&lt;Rack::Lint::InputWrapper:0x7f34784e @input=#&lt;IO:fd 173&gt;&gt;</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, 1]</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>RuntimeError</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