Created
September 18, 2013 23:36
-
-
Save chrisvfritz/6617263 to your computer and use it in GitHub Desktop.
Docverter error while trying to convert from Markdown to MOBI
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
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | |
<title>RuntimeError at /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>/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>/app/lib/docverter-server/runner/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("manifest.yml") | |
</code></li> | |
<li class="post-context-line"><code> end | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info app"> | |
<code>/app/lib/docverter-server/runner/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 < 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('mobi') | |
</code></li> | |
<li class="pre-context-line"><code> options = ["ebook-convert", 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>/app/lib/docverter-server/runner/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("manifest.yml")</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>/app/lib/docverter-server/runner/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("manifest.yml") | |
</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>/app/lib/docverter-server/runner/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 < 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('mobi') | |
</code></li> | |
<li class="post-context-line"><code> options = ["ebook-convert", 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>/app/lib/docverter-server/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['input_files'][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['to'] == 'mobi' | |
</code></li> | |
<li class="pre-context-line"><code> manifest['to'] = 'epub' | |
</code></li> | |
<li class="pre-context-line"><code> manifest.write('manifest.yml') | |
</code></li> | |
<li class="pre-context-line"><code> epub = DocverterServer::Runner::Pandoc.new('.').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>/app/lib/docverter-server/runner/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("manifest.yml")</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>/app/lib/docverter-server/runner/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("manifest.yml") | |
</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>/app/lib/docverter-server/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 < 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['to'] == 'pdf' | |
</code></li> | |
<li class="post-context-line"><code> manifest['to'] = 'html' | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
<li class="post-context-line"><code> manifest.write('manifest.yml') | |
</code></li> | |
<li class="post-context-line"><code> | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info app"> | |
<code>/app/lib/docverter-server/app.rb</code> in | |
<code><strong>POST /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("'", '') 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('manifest.yml') | |
</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['to'])) | |
</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>/app/lib/docverter-server/app.rb</code> in | |
<code><strong>POST /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 'fileutils' | |
</code></li> | |
<li class="pre-context-line"><code> | |
</code></li> | |
<li class="pre-context-line"><code>class DocverterServer::App < Sinatra::Base | |
</code></li> | |
<li class="pre-context-line"><code> post '/convert' 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('input_files') || [] | |
</code></li> | |
<li class="post-context-line"><code> other_files = params.delete('other_files') || [] | |
</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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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 = "#{verb} #{path}" | |
</code></li> | |
<li class="pre-context-line"><code> unbound_method = generate_method(method_name, &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(/[^\?\%\\\/\:\*\w]/) { |c| encoded(c) } | |
</code></li> | |
<li class="post-context-line"><code> pattern.gsub!(/((:\w+)|\*)/) do |match| | |
</code></li> | |
</ol> | |
<div class="clear"></div> | |
</li> | |
<li class="frame-info framework"> | |
<code>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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(&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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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('splat' => [], 'captures' => values) | |
</code></li> | |
<li class="pre-context-line"><code> keys.zip(values) { |k,v| Array === @params[k] ? @params[k] << 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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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('splat' => [], 'captures' => values) | |
</code></li> | |
<li class="pre-context-line"><code> keys.zip(values) { |k,v| Array === @params[k] ? @params[k] << 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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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? && (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 => 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['sinatra.static_file'] | |
</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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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['Content-Type'] = 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['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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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 'throw :halt' 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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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 'throw :halt' 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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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['Content-Type'] = 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['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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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>/app/vendor/bundle/jruby/1.9/gems/rack-protection-1.2.0/lib/rack/protection/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 => :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> { 'X-XSS-Protection' => "1; mode=#{options[:xss_mode]}" } | |
</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>/app/vendor/bundle/jruby/1.9/gems/rack-protection-1.2.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-35" | |
onclick="toggle(35);"> | |
<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 | |
</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["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>/app/vendor/bundle/jruby/1.9/gems/rack-protection-1.2.0/lib/rack/protection/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 < 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['Content-Type'].to_s.split(';', 2).first =~ /^\s*application\/json\s*$/ | |
</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, "attack prevented by #{self.class}" | |
</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>/app/vendor/bundle/jruby/1.9/gems/rack-protection-1.2.0/lib/rack/protection/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, "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="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>/app/vendor/bundle/jruby/1.9/gems/rack-protection-1.2.0/lib/rack/protection/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 => :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> { 'X-XSS-Protection' => "1; mode=#{options[:xss_mode]}" } | |
</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>/app/vendor/bundle/jruby/1.9/gems/rack-1.4.1/lib/rack/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['rack.logger'] = 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, &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>/app/vendor/bundle/jruby/1.9/gems/rack-1.4.1/lib/rack/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["REQUEST_METHOD"] == "HEAD" | |
</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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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 => 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 respond_to?(:prefers_plain_text?) and 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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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 < 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['async.callback']</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>/app/vendor/bundle/jruby/1.9/gems/rack-1.4.1/lib/rack/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("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="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>/app/vendor/bundle/jruby/1.9/gems/rack-1.4.1/lib/rack/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("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>/app/vendor/bundle/jruby/1.9/gems/rack-1.4.1/lib/rack/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 => 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>/app/vendor/bundle/jruby/1.9/gems/rack-1.4.1/lib/rack/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>/app/vendor/bundle/jruby/1.9/gems/sinatra-1.3.3/lib/sinatra/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['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="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 < 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>/app/vendor/bundle/jruby/1.9/gems/mizuno-0.6.4/lib/mizuno/rack/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>/app/vendor/bundle/jruby/1.9/gems/rack-1.4.1/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-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) && | |
</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>/app/vendor/bundle/jruby/1.9/gems/mizuno-0.6.4/lib/mizuno/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'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>/app/vendor/bundle/jruby/1.9/gems/mizuno-0.6.4/lib/mizuno/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['async.callback'] = 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'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>/app/vendor/bundle/jruby/1.9/gems/mizuno-0.6.4/lib/mizuno/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 => error | |
</code></li> | |
<li class="post-context-line"><code> message = "Exception: #{error}" | |
</code></li> | |
<li class="post-context-line"><code> message << "\n#{error.backtrace.join("\n")}" \ | |
</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>/app/vendor/bundle/jruby/1.9/gems/mizuno-0.6.4/lib/mizuno/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 'async.callback' 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>"markdown"</div></td> | |
</tr> | |
<tr> | |
<td>input_files</td> | |
<td class="code"><div>[{:filename=>"temp20130918-29686-jujrl9", :type=>"text/plain", :name=>"input_files[]", :tempfile=>#<Tempfile:/tmp/RackMultipart20130918-2-18bwgkv>, :head=>"Content-Disposition: form-data; name=\"input_files[]\"; filename=\"temp20130918-29686-jujrl9\"\r\nContent-Type: text/plain\r\n"}]</div></td> | |
</tr> | |
<tr> | |
<td>to</td> | |
<td class="code"><div>"mobi"</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/form-data; boundary=363581</div></td> | |
</tr> | |
<tr> | |
<td>HTTP_ACCEPT</td> | |
<td class="code"><div>*/*; q=0.5, application/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/v1 RubyBindings/1.0.0</div></td> | |
</tr> | |
<tr> | |
<td>HTTP_VERSION</td> | |
<td class="code"><div>HTTP/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>/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>/convert</div></td> | |
</tr> | |
<tr> | |
<td>REQUEST_URI</td> | |
<td class="code"><div>http://mydocverterserver.herokuapp.com/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/1.1</div></td> | |
</tr> | |
<tr> | |
<td>async.callback</td> | |
<td class="code"><div>#<Proc:0x35d4ea83@/app/vendor/bundle/jruby/1.9/gems/mizuno-0.6.4/lib/mizuno/rack_servlet.rb:75></div></td> | |
</tr> | |
<tr> | |
<td>rack.errors</td> | |
<td class="code"><div>#<Object:0x25299a21></div></td> | |
</tr> | |
<tr> | |
<td>rack.input</td> | |
<td class="code"><div>#<Rack::Lint::InputWrapper:0x7f34784e @input=#<IO:fd 173>></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>#<Java::OrgEclipseJettyServer::AsyncContinuation:0x3bf214e6></div></td> | |
</tr> | |
<tr> | |
<td>rack.java.servlet.request</td> | |
<td class="code"><div>#<Java::OrgEclipseJettyServer::Request:0x48b68391></div></td> | |
</tr> | |
<tr> | |
<td>rack.java.servlet.response</td> | |
<td class="code"><div>#<Java::OrgEclipseJettyServer::Response:0x246c6665></div></td> | |
</tr> | |
<tr> | |
<td>rack.logger</td> | |
<td class="code"><div>#<Rack::NullLogger:0x558ef8ff @app=#<Rack::Protection::FrameOptions:0x1d7d593b @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :xss_mode=>:block, :frame_options=>:sameorigin, :except=>[:session_hijacking, :remote_token]}, @app=#<Rack::Protection::IPSpoofing:0x36a99af7 @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}, @app=#<Rack::Protection::JsonCsrf:0x647188a0 @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}, @app=#<Rack::Protection::PathTraversal:0xacc2bc5 @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}, @app=#<Rack::Protection::XSSHeader:0x54396e3f @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :xss_mode=>:block, :except=>[:session_hijacking, :remote_token]}, @app=#<DocverterServer::App:0x70c933e3 @app=nil, @template_cache=#<Tilt::Cache:0x296db5ee @cache={}>, @default_layout=:layout>>>>>>></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>{"from"=>"markdown", "to"=>"mobi", "input_files"=>[{:filename=>"temp20130918-29686-jujrl9", :type=>"text/plain", :name=>"input_files[]", :tempfile=>#<Tempfile:/tmp/RackMultipart20130918-2-18bwgkv>, :head=>"Content-Disposition: form-data; name=\"input_files[]\"; filename=\"temp20130918-29686-jujrl9\"\r\nContent-Type: text/plain\r\n"}]}</div></td> | |
</tr> | |
<tr> | |
<td>rack.request.form_input</td> | |
<td class="code"><div>#<Rack::Lint::InputWrapper:0x7f34784e @input=#<IO:fd 173>></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