JSON::ParserError in Lti::LaunchesController#show

767: unexpected token at '<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Action Controller: Exception caught</title> <style> body { background-color: #FAFAFA; color: #333; margin: 0px; } body, p, ol, ul, td { font-family: helvetica, verdana, arial, sans-serif; font-size: 13px; line-height: 18px; } pre { font-size: 11px; white-space: pre-wrap; } pre.box { border: 1px solid #EEE; padding: 10px; margin: 0px; width: 958px; } header { color: #F0F0F0; background: #C52F24; padding: 0.5em 1.5em; } h1 { margin: 0.2em 0; line-height: 1.1em; font-size: 2em; } h2 { color: #C52F24; line-height: 25px; } .details { border: 1px solid #D0D0D0; border-radius: 4px; margin: 1em 0px; display: block; width: 978px; } .summary { padding: 8px 15px; border-bottom: 1px solid #D0D0D0; display: block; } .details pre { margin: 5px; border: none; } #container { box-sizing: border-box; width: 100%; padding: 0 1.5em; } .source * { margin: 0px; padding: 0px; } .source { border: 1px solid #D9D9D9; background: #ECECEC; width: 978px; } .source pre { padding: 10px 0px; border: none; } .source .data { font-size: 80%; overflow: auto; background-color: #FFF; } .info { padding: 0.5em; } .source .data .line_numbers { background-color: #ECECEC; color: #AAA; padding: 1em .5em; border-right: 1px solid #DDD; text-align: right; } .line { padding-left: 10px; white-space: pre; } .line:hover { background-color: #F6F6F6; } .line.active { background-color: #FFCCCC; } .hidden { display: none; } a { color: #980905; } a:visited { color: #666; } a.trace-frames { color: #666; } a:hover { color: #C52F24; } a.trace-frames.selected { color: #C52F24 } </style> <script> var toggle = function(id) { var s = document.getElementById(id).style; s.display = s.display == 'none' ? 'block' : 'none'; return false; } var show = function(id) { document.getElementById(id).style.display = 'block'; } var hide = function(id) { document.getElementById(id).style.display = 'none'; } var toggleTrace = function() { return toggle('blame_trace'); } var toggleSessionDump = function() { return toggle('session_dump'); } var toggleEnvDump = function() { return toggle('env_dump'); } </script> </head> <body> <header> <h1> JSON::ParserError in AccessTokensController#create </h1> </header> <div id="container"> <h2>767: unexpected token at &#39;&lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot; /&gt; &lt;title&gt;Action Controller: Exception caught&lt;/title&gt; &lt;style&gt; body { background-color: #FAFAFA; color: #333; margin: 0px; } body, p, ol, ul, td { font-family: helvetica, verdana, arial, sans-serif; font-size: 13px; line-height: 18px; } pre { font-size: 11px; white-space: pre-wrap; } pre.box { border: 1px solid #EEE; padding: 10px; margin: 0px; width: 958px; } header { color: #F0F0F0; background: #C52F24; padding: 0.5em 1.5em; } h1 { margin: 0.2em 0; line-height: 1.1em; font-size: 2em; } h2 { color: #C52F24; line-height: 25px; } .details { border: 1px solid #D0D0D0; border-radius: 4px; margin: 1em 0px; display: block; width: 978px; } .summary { padding: 8px 15px; border-bottom: 1px solid #D0D0D0; display: block; } .details pre { margin: 5px; border: none; } #container { box-sizing: border-box; width: 100%; padding: 0 1.5em; } .source * { margin: 0px; padding: 0px; } .source { border: 1px solid #D9D9D9; background: #ECECEC; width: 978px; } .source pre { padding: 10px 0px; border: none; } .source .data { font-size: 80%; overflow: auto; background-color: #FFF; } .info { padding: 0.5em; } .source .data .line_numbers { background-color: #ECECEC; color: #AAA; padding: 1em .5em; border-right: 1px solid #DDD; text-align: right; } .line { padding-left: 10px; white-space: pre; } .line:hover { background-color: #F6F6F6; } .line.active { background-color: #FFCCCC; } .hidden { display: none; } a { color: #980905; } a:visited { color: #666; } a.trace-frames { color: #666; } a:hover { color: #C52F24; } a.trace-frames.selected { color: #C52F24 } &lt;/style&gt; &lt;script&gt; var toggle = function(id) { var s = document.getElementById(id).style; s.display = s.display == &#39;none&#39; ? &#39;block&#39; : &#39;none&#39;; return false; } var show = function(id) { document.getElementById(id).style.display = &#39;block&#39;; } var hide = function(id) { document.getElementById(id).style.display = &#39;none&#39;; } var toggleTrace = function() { return toggle(&#39;blame_trace&#39;); } var toggleSessionDump = function() { return toggle(&#39;session_dump&#39;); } var toggleEnvDump = function() { return toggle(&#39;env_dump&#39;); } &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;header&gt; &lt;h1&gt; ActiveRecord::RecordNotFound in PlatformKeysController#show &lt;/h1&gt; &lt;/header&gt; &lt;div id=&quot;container&quot;&gt; &lt;h2&gt;Couldn&amp;#39;t find Platform with &amp;#39;id&amp;#39;=2274&lt;/h2&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-0&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#177&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;175&lt;/span&gt; &lt;span&gt;176&lt;/span&gt; &lt;span&gt;177&lt;/span&gt; &lt;span&gt;178&lt;/span&gt; &lt;span&gt;179&lt;/span&gt; &lt;span&gt;180&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; record = statement.execute([id], connection).first &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; unless record &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; raise RecordNotFound.new(&amp;quot;Couldn&amp;#39;t find #{name} with &amp;#39;#{primary_key}&amp;#39;=#{id}&amp;quot;, &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; name, primary_key, id) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; record &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source &quot; id=&quot;frame-source-1&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#65&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;63&lt;/span&gt; &lt;span&gt;64&lt;/span&gt; &lt;span&gt;65&lt;/span&gt; &lt;span&gt;66&lt;/span&gt; &lt;span&gt;67&lt;/span&gt; &lt;span&gt;68&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; private &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def set_platform &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @platform = Platform.find(params[:platform_id]) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; # Use callbacks to share common setup or constraints between actions. &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def set_platform_key &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-2&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#426&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;424&lt;/span&gt; &lt;span&gt;425&lt;/span&gt; &lt;span&gt;426&lt;/span&gt; &lt;span&gt;427&lt;/span&gt; &lt;span&gt;428&lt;/span&gt; &lt;span&gt;429&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; lambda do |target, value, &amp;amp;block| &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; target, block, method, *arguments = expand(target, value, block) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; target.send(method, *arguments, &amp;amp;block) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-3&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#198&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;196&lt;/span&gt; &lt;span&gt;197&lt;/span&gt; &lt;span&gt;198&lt;/span&gt; &lt;span&gt;199&lt;/span&gt; &lt;span&gt;200&lt;/span&gt; &lt;span&gt;201&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; unless halted &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; result_lambda = -&amp;gt; { user_callback.call target, value } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; env.halted = halted_lambda.call(target, result_lambda) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if env.halted &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-4&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#34&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;32&lt;/span&gt; &lt;span&gt;33&lt;/span&gt; &lt;span&gt;34&lt;/span&gt; &lt;span&gt;35&lt;/span&gt; &lt;span&gt;36&lt;/span&gt; &lt;span&gt;37&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; included do &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; define_callbacks :process_action, &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; terminator: -&amp;gt;(controller, result_lambda) { result_lambda.call; controller.performed? }, &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; skip_after_callbacks_if_terminated: true &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-5&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#199&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;197&lt;/span&gt; &lt;span&gt;198&lt;/span&gt; &lt;span&gt;199&lt;/span&gt; &lt;span&gt;200&lt;/span&gt; &lt;span&gt;201&lt;/span&gt; &lt;span&gt;202&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; unless halted &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; result_lambda = -&amp;gt; { user_callback.call target, value } &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; env.halted = halted_lambda.call(target, result_lambda) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if env.halted &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; target.send :halted_callback_hook, filter &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-6&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#513&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;511&lt;/span&gt; &lt;span&gt;512&lt;/span&gt; &lt;span&gt;513&lt;/span&gt; &lt;span&gt;514&lt;/span&gt; &lt;span&gt;515&lt;/span&gt; &lt;span&gt;516&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def invoke_before(arg) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @before.each { |b| b.call(arg) } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def invoke_after(arg) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-7&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#513&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;511&lt;/span&gt; &lt;span&gt;512&lt;/span&gt; &lt;span&gt;513&lt;/span&gt; &lt;span&gt;514&lt;/span&gt; &lt;span&gt;515&lt;/span&gt; &lt;span&gt;516&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def invoke_before(arg) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @before.each { |b| b.call(arg) } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def invoke_after(arg) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-8&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#513&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;511&lt;/span&gt; &lt;span&gt;512&lt;/span&gt; &lt;span&gt;513&lt;/span&gt; &lt;span&gt;514&lt;/span&gt; &lt;span&gt;515&lt;/span&gt; &lt;span&gt;516&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def invoke_before(arg) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @before.each { |b| b.call(arg) } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def invoke_after(arg) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-9&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#131&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;129&lt;/span&gt; &lt;span&gt;130&lt;/span&gt; &lt;span&gt;131&lt;/span&gt; &lt;span&gt;132&lt;/span&gt; &lt;span&gt;133&lt;/span&gt; &lt;span&gt;134&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; # Common case: no &amp;#39;around&amp;#39; callbacks defined &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if next_sequence.final? &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; next_sequence.invoke_before(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; env.value = !env.halted &amp;amp;&amp;amp; (!block_given? || yield) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; next_sequence.invoke_after(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; env.value &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-10&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#41&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;39&lt;/span&gt; &lt;span&gt;40&lt;/span&gt; &lt;span&gt;41&lt;/span&gt; &lt;span&gt;42&lt;/span&gt; &lt;span&gt;43&lt;/span&gt; &lt;span&gt;44&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; # &amp;lt;tt&amp;gt;process_action&amp;lt;/tt&amp;gt; callbacks around the normal behavior. &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def process_action(*args) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; run_callbacks(:process_action) do &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; super &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-11&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#22&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;20&lt;/span&gt; &lt;span&gt;21&lt;/span&gt; &lt;span&gt;22&lt;/span&gt; &lt;span&gt;23&lt;/span&gt; &lt;span&gt;24&lt;/span&gt; &lt;span&gt;25&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; private &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def process_action(*args) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; super &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue Exception =&amp;gt; exception &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; request.env[&amp;quot;action_dispatch.show_detailed_exceptions&amp;quot;] ||= show_detailed_exceptions? &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue_with_handler(exception) || raise &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-12&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#34&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;32&lt;/span&gt; &lt;span&gt;33&lt;/span&gt; &lt;span&gt;34&lt;/span&gt; &lt;span&gt;35&lt;/span&gt; &lt;span&gt;36&lt;/span&gt; &lt;span&gt;37&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; ActiveSupport::Notifications.instrument(&amp;quot;process_action.action_controller&amp;quot;, raw_payload) do |payload| &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; result = super &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; payload[:status] = response.status &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; result &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; ensure &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-13&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#168&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;166&lt;/span&gt; &lt;span&gt;167&lt;/span&gt; &lt;span&gt;168&lt;/span&gt; &lt;span&gt;169&lt;/span&gt; &lt;span&gt;170&lt;/span&gt; &lt;span&gt;171&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def instrument(name, payload = {}) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if notifier.listening?(name) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; instrumenter.instrument(name, payload) { yield payload if block_given? } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; else &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; yield payload if block_given? &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-14&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#23&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;21&lt;/span&gt; &lt;span&gt;22&lt;/span&gt; &lt;span&gt;23&lt;/span&gt; &lt;span&gt;24&lt;/span&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; listeners_state = start name, payload &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; yield payload &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue Exception =&amp;gt; e &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; payload[:exception] = [e.class.name, e.message] &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; payload[:exception_object] = e &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-15&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#168&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;166&lt;/span&gt; &lt;span&gt;167&lt;/span&gt; &lt;span&gt;168&lt;/span&gt; &lt;span&gt;169&lt;/span&gt; &lt;span&gt;170&lt;/span&gt; &lt;span&gt;171&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def instrument(name, payload = {}) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if notifier.listening?(name) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; instrumenter.instrument(name, payload) { yield payload if block_given? } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; else &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; yield payload if block_given? &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-16&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#32&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;30&lt;/span&gt; &lt;span&gt;31&lt;/span&gt; &lt;span&gt;32&lt;/span&gt; &lt;span&gt;33&lt;/span&gt; &lt;span&gt;34&lt;/span&gt; &lt;span&gt;35&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; ActiveSupport::Notifications.instrument(&amp;quot;start_processing.action_controller&amp;quot;, raw_payload.dup) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; ActiveSupport::Notifications.instrument(&amp;quot;process_action.action_controller&amp;quot;, raw_payload) do |payload| &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; result = super &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; payload[:status] = response.status &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-17&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#256&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;254&lt;/span&gt; &lt;span&gt;255&lt;/span&gt; &lt;span&gt;256&lt;/span&gt; &lt;span&gt;257&lt;/span&gt; &lt;span&gt;258&lt;/span&gt; &lt;span&gt;259&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; request.filtered_parameters.merge! wrapped_filtered_hash &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; super &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; private &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-18&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#24&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;22&lt;/span&gt; &lt;span&gt;23&lt;/span&gt; &lt;span&gt;24&lt;/span&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; # and it won&amp;#39;t be cleaned up by the method below. &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; ActiveRecord::LogSubscriber.reset_runtime &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; super &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def cleanup_view_runtime &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-19&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#134&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;132&lt;/span&gt; &lt;span&gt;133&lt;/span&gt; &lt;span&gt;134&lt;/span&gt; &lt;span&gt;135&lt;/span&gt; &lt;span&gt;136&lt;/span&gt; &lt;span&gt;137&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; @_response_body = nil &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; process_action(action_name, *args) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; # Delegates to the class&amp;#39; ::controller_path &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-20&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#32&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;30&lt;/span&gt; &lt;span&gt;31&lt;/span&gt; &lt;span&gt;32&lt;/span&gt; &lt;span&gt;33&lt;/span&gt; &lt;span&gt;34&lt;/span&gt; &lt;span&gt;35&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def process(*) #:nodoc: &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; old_config, I18n.config = I18n.config, I18nProxy.new(I18n.config, lookup_context) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; super &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; ensure &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; I18n.config = old_config &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-21&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#191&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;189&lt;/span&gt; &lt;span&gt;190&lt;/span&gt; &lt;span&gt;191&lt;/span&gt; &lt;span&gt;192&lt;/span&gt; &lt;span&gt;193&lt;/span&gt; &lt;span&gt;194&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; set_request!(request) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; set_response!(response) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; process(name) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; request.commit_flash &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; to_a &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-22&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#252&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;250&lt;/span&gt; &lt;span&gt;251&lt;/span&gt; &lt;span&gt;252&lt;/span&gt; &lt;span&gt;253&lt;/span&gt; &lt;span&gt;254&lt;/span&gt; &lt;span&gt;255&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; middleware_stack.build(name) { |env| new.dispatch(name, req, res) }.call req.env &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; else &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; new.dispatch(name, req, res) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-23&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#52&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;50&lt;/span&gt; &lt;span&gt;51&lt;/span&gt; &lt;span&gt;52&lt;/span&gt; &lt;span&gt;53&lt;/span&gt; &lt;span&gt;54&lt;/span&gt; &lt;span&gt;55&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def dispatch(controller, action, req, res) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; controller.dispatch(action, req, res) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-24&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#34&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;32&lt;/span&gt; &lt;span&gt;33&lt;/span&gt; &lt;span&gt;34&lt;/span&gt; &lt;span&gt;35&lt;/span&gt; &lt;span&gt;36&lt;/span&gt; &lt;span&gt;37&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; controller = controller req &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; res = controller.make_response! req &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; dispatch(controller, params[:action], req, res) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue ActionController::RoutingError &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if @raise_on_name_error &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; raise &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-25&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#52&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;50&lt;/span&gt; &lt;span&gt;51&lt;/span&gt; &lt;span&gt;52&lt;/span&gt; &lt;span&gt;53&lt;/span&gt; &lt;span&gt;54&lt;/span&gt; &lt;span&gt;55&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; req.path_parameters = set_params.merge parameters &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = route.app.serve(req) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if &amp;quot;pass&amp;quot; == headers[&amp;quot;X-Cascade&amp;quot;] &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; req.script_name = script_name &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-26&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#35&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;33&lt;/span&gt; &lt;span&gt;34&lt;/span&gt; &lt;span&gt;35&lt;/span&gt; &lt;span&gt;36&lt;/span&gt; &lt;span&gt;37&lt;/span&gt; &lt;span&gt;38&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def serve(req) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; find_routes(req).each do |match, parameters, route| &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; set_params = req.path_parameters &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; path_info = req.path_info &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; script_name = req.script_name &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-27&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#35&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;33&lt;/span&gt; &lt;span&gt;34&lt;/span&gt; &lt;span&gt;35&lt;/span&gt; &lt;span&gt;36&lt;/span&gt; &lt;span&gt;37&lt;/span&gt; &lt;span&gt;38&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def serve(req) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; find_routes(req).each do |match, parameters, route| &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; set_params = req.path_parameters &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; path_info = req.path_info &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; script_name = req.script_name &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-28&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#840&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;838&lt;/span&gt; &lt;span&gt;839&lt;/span&gt; &lt;span&gt;840&lt;/span&gt; &lt;span&gt;841&lt;/span&gt; &lt;span&gt;842&lt;/span&gt; &lt;span&gt;843&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; req = make_request(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; req.path_info = Journey::Router::Utils.normalize_path(req.path_info) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @router.serve(req) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def recognize_path(path, environment = {}) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-29&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#15&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;13&lt;/span&gt; &lt;span&gt;14&lt;/span&gt; &lt;span&gt;15&lt;/span&gt; &lt;span&gt;16&lt;/span&gt; &lt;span&gt;17&lt;/span&gt; &lt;span&gt;18&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; env[RACK_TEMPFILES] ||= [] &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; body_proxy = BodyProxy.new(body) do &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; env[RACK_TEMPFILES].each(&amp;amp;:close!) unless env[RACK_TEMPFILES].nil? &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-30&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#27&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;span&gt;30&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if etag_status?(status) &amp;amp;&amp;amp; etag_body?(body) &amp;amp;&amp;amp; !skip_caching?(headers) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; original_body = body &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-31&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#27&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;span&gt;30&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; case env[REQUEST_METHOD] &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; when &amp;quot;GET&amp;quot;, &amp;quot;HEAD&amp;quot; &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; headers = Utils::HeaderHash[headers] &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if status == 200 &amp;amp;&amp;amp; fresh?(env, headers) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; status = 304 &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-32&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#12&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;10&lt;/span&gt; &lt;span&gt;11&lt;/span&gt; &lt;span&gt;12&lt;/span&gt; &lt;span&gt;13&lt;/span&gt; &lt;span&gt;14&lt;/span&gt; &lt;span&gt;15&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if env[REQUEST_METHOD] == HEAD &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; [ &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-33&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#18&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;16&lt;/span&gt; &lt;span&gt;17&lt;/span&gt; &lt;span&gt;18&lt;/span&gt; &lt;span&gt;19&lt;/span&gt; &lt;span&gt;20&lt;/span&gt; &lt;span&gt;21&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; request = ActionDispatch::Request.new env &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; _, headers, _ = response = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; return response unless html_response?(headers) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; return response if policy_present?(headers) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-34&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#266&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;264&lt;/span&gt; &lt;span&gt;265&lt;/span&gt; &lt;span&gt;266&lt;/span&gt; &lt;span&gt;267&lt;/span&gt; &lt;span&gt;268&lt;/span&gt; &lt;span&gt;269&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; req = make_request env &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; prepare_session(req) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = app.call(req.env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; res = Rack::Response::Raw.new status, headers &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; commit_session(req, res) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; [status, headers, body] &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-35&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#260&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;258&lt;/span&gt; &lt;span&gt;259&lt;/span&gt; &lt;span&gt;260&lt;/span&gt; &lt;span&gt;261&lt;/span&gt; &lt;span&gt;262&lt;/span&gt; &lt;span&gt;263&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; context(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def context(env, app = @app) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-36&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#670&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;668&lt;/span&gt; &lt;span&gt;669&lt;/span&gt; &lt;span&gt;670&lt;/span&gt; &lt;span&gt;671&lt;/span&gt; &lt;span&gt;672&lt;/span&gt; &lt;span&gt;673&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; request = ActionDispatch::Request.new env &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if request.have_cookie_jar? &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; cookie_jar = request.cookie_jar &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-37&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#28&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;span&gt;30&lt;/span&gt; &lt;span&gt;31&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; result = run_callbacks :call do &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue =&amp;gt; error &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-38&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#98&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;96&lt;/span&gt; &lt;span&gt;97&lt;/span&gt; &lt;span&gt;98&lt;/span&gt; &lt;span&gt;99&lt;/span&gt; &lt;span&gt;100&lt;/span&gt; &lt;span&gt;101&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if callbacks.empty? &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; yield if block_given? &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; else &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; env = Filters::Environment.new(self, false, nil) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; next_sequence = callbacks.compile &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-39&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#26&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;24&lt;/span&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; error = nil &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; result = run_callbacks :call do &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue =&amp;gt; error &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-40&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#61&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;59&lt;/span&gt; &lt;span&gt;60&lt;/span&gt; &lt;span&gt;61&lt;/span&gt; &lt;span&gt;62&lt;/span&gt; &lt;span&gt;63&lt;/span&gt; &lt;span&gt;64&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; request = ActionDispatch::Request.new env &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; _, headers, body = response = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if headers[&amp;quot;X-Cascade&amp;quot;] == &amp;quot;pass&amp;quot; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; body.close if body.respond_to?(:close) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-41&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#33&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;31&lt;/span&gt; &lt;span&gt;32&lt;/span&gt; &lt;span&gt;33&lt;/span&gt; &lt;span&gt;34&lt;/span&gt; &lt;span&gt;35&lt;/span&gt; &lt;span&gt;36&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; request = ActionDispatch::Request.new env &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue Exception =&amp;gt; exception &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if request.show_exceptions? &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; render_exception(request, exception) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-42&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#38&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;36&lt;/span&gt; &lt;span&gt;37&lt;/span&gt; &lt;span&gt;38&lt;/span&gt; &lt;span&gt;39&lt;/span&gt; &lt;span&gt;40&lt;/span&gt; &lt;span&gt;41&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; instrumenter.start &amp;quot;request.action_dispatch&amp;quot;, request: request &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; logger.info { started_request_message(request) } &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; body = ::Rack::BodyProxy.new(body) { finish(request) } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; [status, headers, body] &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue Exception &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-43&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#26&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;24&lt;/span&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if logger.respond_to?(:tagged) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; logger.tagged(compute_tags(request)) { call_app(request, env) } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; else &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; call_app(request, env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-44&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#71&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;69&lt;/span&gt; &lt;span&gt;70&lt;/span&gt; &lt;span&gt;71&lt;/span&gt; &lt;span&gt;72&lt;/span&gt; &lt;span&gt;73&lt;/span&gt; &lt;span&gt;74&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def tagged(*tags) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; formatter.tagged(*tags) { yield self } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def flush &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-45&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#28&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;span&gt;30&lt;/span&gt; &lt;span&gt;31&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def tagged(*tags) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; new_tags = push_tags(*tags) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; yield self &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; ensure &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; pop_tags(new_tags.size) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-46&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#71&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;69&lt;/span&gt; &lt;span&gt;70&lt;/span&gt; &lt;span&gt;71&lt;/span&gt; &lt;span&gt;72&lt;/span&gt; &lt;span&gt;73&lt;/span&gt; &lt;span&gt;74&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def tagged(*tags) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; formatter.tagged(*tags) { yield self } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def flush &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-47&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#26&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;24&lt;/span&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if logger.respond_to?(:tagged) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; logger.tagged(compute_tags(request)) { call_app(request, env) } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; else &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; call_app(request, env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-48&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#81&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;79&lt;/span&gt; &lt;span&gt;80&lt;/span&gt; &lt;span&gt;81&lt;/span&gt; &lt;span&gt;82&lt;/span&gt; &lt;span&gt;83&lt;/span&gt; &lt;span&gt;84&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; req = ActionDispatch::Request.new env &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; req.remote_ip = GetIp.new(req, check_ip, proxies) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @app.call(req.env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; # The GetIp class exists as a way to defer processing of the request data &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-49&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#27&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;span&gt;30&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; req = ActionDispatch::Request.new env &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; req.request_id = make_request_id(req.x_request_id) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @app.call(env).tap { |_status, headers, _body| headers[X_REQUEST_ID] = req.request_id } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; private &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-50&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#24&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;22&lt;/span&gt; &lt;span&gt;23&lt;/span&gt; &lt;span&gt;24&lt;/span&gt; &lt;span&gt;25&lt;/span&gt; &lt;span&gt;26&lt;/span&gt; &lt;span&gt;27&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def method_override(env) &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-51&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#22&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;20&lt;/span&gt; &lt;span&gt;21&lt;/span&gt; &lt;span&gt;22&lt;/span&gt; &lt;span&gt;23&lt;/span&gt; &lt;span&gt;24&lt;/span&gt; &lt;span&gt;25&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; start_time = Utils.clock_time &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; headers = Utils::HeaderHash[headers] &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; request_time = Utils.clock_time - start_time &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-52&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#29&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;27&lt;/span&gt; &lt;span&gt;28&lt;/span&gt; &lt;span&gt;29&lt;/span&gt; &lt;span&gt;30&lt;/span&gt; &lt;span&gt;31&lt;/span&gt; &lt;span&gt;32&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; LocalCacheRegistry.set_cache_for(local_cache_key, LocalStore.new) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; response = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; response[2] = ::Rack::BodyProxy.new(response[2]) do &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; LocalCacheRegistry.set_cache_for(local_cache_key, nil) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-53&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#14&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;12&lt;/span&gt; &lt;span&gt;13&lt;/span&gt; &lt;span&gt;14&lt;/span&gt; &lt;span&gt;15&lt;/span&gt; &lt;span&gt;16&lt;/span&gt; &lt;span&gt;17&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; state = @executor.run! &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; response = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; returned = response &amp;lt;&amp;lt; ::Rack::BodyProxy.new(response.pop) { state.complete! } &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; ensure &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; state.complete! unless returned &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-54&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#127&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;125&lt;/span&gt; &lt;span&gt;126&lt;/span&gt; &lt;span&gt;127&lt;/span&gt; &lt;span&gt;128&lt;/span&gt; &lt;span&gt;129&lt;/span&gt; &lt;span&gt;130&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @app.call(req.env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt;end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-55&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#110&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;108&lt;/span&gt; &lt;span&gt;109&lt;/span&gt; &lt;span&gt;110&lt;/span&gt; &lt;span&gt;111&lt;/span&gt; &lt;span&gt;112&lt;/span&gt; &lt;span&gt;113&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if body.respond_to?(:to_path) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; case type = variation(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; when &amp;#39;X-Accel-Redirect&amp;#39; &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-56&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#524&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;522&lt;/span&gt; &lt;span&gt;523&lt;/span&gt; &lt;span&gt;524&lt;/span&gt; &lt;span&gt;525&lt;/span&gt; &lt;span&gt;526&lt;/span&gt; &lt;span&gt;527&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; req = build_request env &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; app.call req.env &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; # Defines additional Rack env configuration that is added on each call. &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-57&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#228&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;226&lt;/span&gt; &lt;span&gt;227&lt;/span&gt; &lt;span&gt;228&lt;/span&gt; &lt;span&gt;229&lt;/span&gt; &lt;span&gt;230&lt;/span&gt; &lt;span&gt;231&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; def call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; env[Const::PUMA_CONFIG] = @config &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-58&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#718&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;716&lt;/span&gt; &lt;span&gt;717&lt;/span&gt; &lt;span&gt;718&lt;/span&gt; &lt;span&gt;719&lt;/span&gt; &lt;span&gt;720&lt;/span&gt; &lt;span&gt;721&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; status, headers, res_body = @app.call(env) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; return :async if req.hijacked &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-59&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#472&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;470&lt;/span&gt; &lt;span&gt;471&lt;/span&gt; &lt;span&gt;472&lt;/span&gt; &lt;span&gt;473&lt;/span&gt; &lt;span&gt;474&lt;/span&gt; &lt;span&gt;475&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; while true &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; case handle_request(client, buffer) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; when false &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; return &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; when :async &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-60&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#328&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;326&lt;/span&gt; &lt;span&gt;327&lt;/span&gt; &lt;span&gt;328&lt;/span&gt; &lt;span&gt;329&lt;/span&gt; &lt;span&gt;330&lt;/span&gt; &lt;span&gt;331&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; else &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; if process_now &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; process_client client, buffer &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; else &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; client.set_timeout @first_data_timeout &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; @reactor.add client &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;source hidden&quot; id=&quot;frame-source-61&quot;&gt; &lt;div class=&quot;info&quot;&gt; Extracted source (around line &lt;strong&gt;#134&lt;/strong&gt;): &lt;/div&gt; &lt;div class=&quot;data&quot;&gt; &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;lines&quot;&gt; &lt;tr&gt; &lt;td&gt; &lt;pre class=&quot;line_numbers&quot;&gt; &lt;span&gt;132&lt;/span&gt; &lt;span&gt;133&lt;/span&gt; &lt;span&gt;134&lt;/span&gt; &lt;span&gt;135&lt;/span&gt; &lt;span&gt;136&lt;/span&gt; &lt;span&gt;137&lt;/span&gt; &lt;/pre&gt; &lt;/td&gt; &lt;td width=&quot;100%&quot;&gt; &lt;pre&gt; &lt;div class=&quot;line&quot;&gt; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; begin &lt;/div&gt;&lt;div class=&quot;line active&quot;&gt; block.call(work, *extra) &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; rescue Exception =&amp;gt; e &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; STDERR.puts &amp;quot;Error reached top of thread-pool: #{e.message} (#{e.class})&amp;quot; &lt;/div&gt;&lt;div class=&quot;line&quot;&gt; end &lt;/div&gt; &lt;/pre&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;code&gt;Rails.root: /app&lt;/code&gt;&lt;/p&gt; &lt;div id=&quot;traces&quot;&gt; &lt;a href=&quot;#&quot; onclick=&quot;hide(&amp;#39;Framework-Trace&amp;#39;);hide(&amp;#39;Full-Trace&amp;#39;);show(&amp;#39;Application-Trace&amp;#39;);; return false;&quot;&gt;Application Trace&lt;/a&gt; | &lt;a href=&quot;#&quot; onclick=&quot;hide(&amp;#39;Application-Trace&amp;#39;);hide(&amp;#39;Full-Trace&amp;#39;);show(&amp;#39;Framework-Trace&amp;#39;);; return false;&quot;&gt;Framework Trace&lt;/a&gt; | &lt;a href=&quot;#&quot; onclick=&quot;hide(&amp;#39;Application-Trace&amp;#39;);hide(&amp;#39;Framework-Trace&amp;#39;);show(&amp;#39;Full-Trace&amp;#39;);; return false;&quot;&gt;Full Trace&lt;/a&gt; &lt;div id=&quot;Application-Trace&quot; style=&quot;display: block;&quot;&gt; &lt;pre&gt;&lt;code&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;1&quot; href=&quot;#&quot;&gt;app/controllers/platform_keys_controller.rb:65:in `set_platform&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt; &lt;/div&gt; &lt;div id=&quot;Framework-Trace&quot; style=&quot;display: none;&quot;&gt; &lt;pre&gt;&lt;code&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;0&quot; href=&quot;#&quot;&gt;activerecord (5.2.4.6) lib/active_record/core.rb:177:in `find&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;2&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:426:in `block in make_lambda&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;3&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:198:in `block (2 levels) in halting&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;4&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in &amp;lt;module:Callbacks&amp;gt;&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;5&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:199:in `block in halting&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;6&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:513:in `block in invoke_before&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;7&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:513:in `each&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;8&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:513:in `invoke_before&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;9&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:131:in `run_callbacks&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;10&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/abstract_controller/callbacks.rb:41:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;11&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal/rescue.rb:22:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;12&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;13&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/notifications.rb:168:in `block in instrument&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;14&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/notifications/instrumenter.rb:23:in `instrument&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;15&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/notifications.rb:168:in `instrument&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;16&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal/instrumentation.rb:32:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;17&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal/params_wrapper.rb:256:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;18&quot; href=&quot;#&quot;&gt;activerecord (5.2.4.6) lib/active_record/railties/controller_runtime.rb:24:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;19&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/abstract_controller/base.rb:134:in `process&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;20&quot; href=&quot;#&quot;&gt;actionview (5.2.4.6) lib/action_view/rendering.rb:32:in `process&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;21&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal.rb:191:in `dispatch&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;22&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal.rb:252:in `dispatch&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;23&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:52:in `dispatch&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;24&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:34:in `serve&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;25&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:52:in `block in serve&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;26&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:35:in `each&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;27&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:35:in `serve&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;28&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:840:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;29&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;30&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/etag.rb:27:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;31&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/conditional_get.rb:27:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;32&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/head.rb:12:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;33&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/http/content_security_policy.rb:18:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;34&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;35&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;36&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/cookies.rb:670:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;37&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;38&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:98:in `run_callbacks&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;39&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/callbacks.rb:26:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;40&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;41&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;42&quot; href=&quot;#&quot;&gt;railties (5.2.4.6) lib/rails/rack/logger.rb:38:in `call_app&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;43&quot; href=&quot;#&quot;&gt;railties (5.2.4.6) lib/rails/rack/logger.rb:26:in `block in call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;44&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:71:in `block in tagged&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;45&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:28:in `tagged&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;46&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:71:in `tagged&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;47&quot; href=&quot;#&quot;&gt;railties (5.2.4.6) lib/rails/rack/logger.rb:26:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;48&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/remote_ip.rb:81:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;49&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/request_id.rb:27:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;50&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/method_override.rb:24:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;51&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/runtime.rb:22:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;52&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;53&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/executor.rb:14:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;54&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/static.rb:127:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;55&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/sendfile.rb:110:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;56&quot; href=&quot;#&quot;&gt;railties (5.2.4.6) lib/rails/engine.rb:524:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;57&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/configuration.rb:228:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;58&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/server.rb:718:in `handle_request&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;59&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/server.rb:472:in `process_client&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;60&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/server.rb:328:in `block in run&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;61&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/thread_pool.rb:134:in `block in spawn_thread&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt; &lt;/div&gt; &lt;div id=&quot;Full-Trace&quot; style=&quot;display: none;&quot;&gt; &lt;pre&gt;&lt;code&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;0&quot; href=&quot;#&quot;&gt;activerecord (5.2.4.6) lib/active_record/core.rb:177:in `find&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;1&quot; href=&quot;#&quot;&gt;app/controllers/platform_keys_controller.rb:65:in `set_platform&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;2&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:426:in `block in make_lambda&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;3&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:198:in `block (2 levels) in halting&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;4&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in &amp;lt;module:Callbacks&amp;gt;&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;5&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:199:in `block in halting&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;6&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:513:in `block in invoke_before&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;7&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:513:in `each&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;8&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:513:in `invoke_before&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;9&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:131:in `run_callbacks&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;10&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/abstract_controller/callbacks.rb:41:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;11&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal/rescue.rb:22:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;12&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;13&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/notifications.rb:168:in `block in instrument&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;14&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/notifications/instrumenter.rb:23:in `instrument&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;15&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/notifications.rb:168:in `instrument&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;16&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal/instrumentation.rb:32:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;17&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal/params_wrapper.rb:256:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;18&quot; href=&quot;#&quot;&gt;activerecord (5.2.4.6) lib/active_record/railties/controller_runtime.rb:24:in `process_action&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;19&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/abstract_controller/base.rb:134:in `process&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;20&quot; href=&quot;#&quot;&gt;actionview (5.2.4.6) lib/action_view/rendering.rb:32:in `process&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;21&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal.rb:191:in `dispatch&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;22&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_controller/metal.rb:252:in `dispatch&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;23&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:52:in `dispatch&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;24&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:34:in `serve&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;25&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:52:in `block in serve&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;26&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:35:in `each&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;27&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:35:in `serve&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;28&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:840:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;29&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;30&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/etag.rb:27:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;31&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/conditional_get.rb:27:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;32&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/head.rb:12:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;33&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/http/content_security_policy.rb:18:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;34&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;35&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;36&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/cookies.rb:670:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;37&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;38&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/callbacks.rb:98:in `run_callbacks&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;39&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/callbacks.rb:26:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;40&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;41&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;42&quot; href=&quot;#&quot;&gt;railties (5.2.4.6) lib/rails/rack/logger.rb:38:in `call_app&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;43&quot; href=&quot;#&quot;&gt;railties (5.2.4.6) lib/rails/rack/logger.rb:26:in `block in call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;44&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:71:in `block in tagged&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;45&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:28:in `tagged&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;46&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:71:in `tagged&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;47&quot; href=&quot;#&quot;&gt;railties (5.2.4.6) lib/rails/rack/logger.rb:26:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;48&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/remote_ip.rb:81:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;49&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/request_id.rb:27:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;50&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/method_override.rb:24:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;51&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/runtime.rb:22:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;52&quot; href=&quot;#&quot;&gt;activesupport (5.2.4.6) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;53&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/executor.rb:14:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;54&quot; href=&quot;#&quot;&gt;actionpack (5.2.4.6) lib/action_dispatch/middleware/static.rb:127:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;55&quot; href=&quot;#&quot;&gt;rack (2.2.3) lib/rack/sendfile.rb:110:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;56&quot; href=&quot;#&quot;&gt;railties (5.2.4.6) lib/rails/engine.rb:524:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;57&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/configuration.rb:228:in `call&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;58&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/server.rb:718:in `handle_request&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;59&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/server.rb:472:in `process_client&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;60&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/server.rb:328:in `block in run&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;a class=&quot;trace-frames&quot; data-frame-id=&quot;61&quot; href=&quot;#&quot;&gt;puma (4.3.8) lib/puma/thread_pool.rb:134:in `block in spawn_thread&amp;#39;&lt;/a&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt; &lt;/div&gt; &lt;script type=&quot;text/javascript&quot;&gt; var traceFrames = document.getElementsByClassName(&#39;trace-frames&#39;); var selectedFrame, currentSource = document.getElementById(&#39;frame-source-0&#39;); // Add click listeners for all stack frames for (var i = 0; i &lt; traceFrames.length; i++) { traceFrames[i].addEventListener(&#39;click&#39;, function(e) { e.preventDefault(); var target = e.target; var frame_id = target.dataset.frameId; if (selectedFrame) { selectedFrame.className = selectedFrame.className.replace(&quot;selected&quot;, &quot;&quot;); } target.className += &quot; selected&quot;; selectedFrame = target; // Change the extracted source code changeSourceExtract(frame_id); }); function changeSourceExtract(frame_id) { var el = document.getElementById(&#39;frame-source-&#39; + frame_id); if (currentSource &amp;&amp; el) { currentSource.className += &quot; hidden&quot;; el.className = el.className.replace(&quot; hidden&quot;, &quot;&quot;); currentSource = el; } } } &lt;/script&gt; &lt;/div&gt; &lt;h2 style=&quot;margin-top: 30px&quot;&gt;Request&lt;/h2&gt; &lt;p&gt;&lt;b&gt;Parameters&lt;/b&gt;:&lt;/p&gt; &lt;pre&gt;{&amp;quot;platform_id&amp;quot;=&amp;gt;&amp;quot;2274&amp;quot;, &amp;quot;id&amp;quot;=&amp;gt;&amp;quot;2109&amp;quot;, &amp;quot;format&amp;quot;=&amp;gt;&amp;quot;json&amp;quot;} &lt;/pre&gt; &lt;div class=&quot;details&quot;&gt; &lt;div class=&quot;summary&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;return toggleSessionDump()&quot;&gt;Toggle session dump&lt;/a&gt;&lt;/div&gt; &lt;div id=&quot;session_dump&quot; style=&quot;display:none&quot;&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;details&quot;&gt; &lt;div class=&quot;summary&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;return toggleEnvDump()&quot;&gt;Toggle env dump&lt;/a&gt;&lt;/div&gt; &lt;div id=&quot;env_dump&quot; style=&quot;display:none&quot;&gt;&lt;pre&gt;GATEWAY_INTERFACE: &amp;quot;CGI/1.2&amp;quot; HTTP_ACCEPT: &amp;quot;*/*&amp;quot; HTTP_ACCEPT_ENCODING: &amp;quot;gzip;q=1.0,deflate;q=0.6,identity;q=0.3&amp;quot; HTTP_VERSION: &amp;quot;HTTP/1.1&amp;quot; HTTP_X_FORWARDED_FOR: &amp;quot;10.128.0.14&amp;quot; HTTP_X_FORWARDED_HOST: &amp;quot;lti-ri.imsglobal.org&amp;quot; HTTP_X_REQUEST_ID: &amp;quot;3a2dceaa27599902563170774e33e644&amp;quot; ORIGINAL_SCRIPT_NAME: &amp;quot;&amp;quot; REMOTE_ADDR: &amp;quot;10.24.0.8&amp;quot; SERVER_NAME: &amp;quot;lti-ri.imsglobal.org&amp;quot; SERVER_PROTOCOL: &amp;quot;HTTP/1.1&amp;quot;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt; &lt;h2 style=&quot;margin-top: 30px&quot;&gt;Response&lt;/h2&gt; &lt;p&gt;&lt;b&gt;Headers&lt;/b&gt;:&lt;/p&gt; &lt;pre&gt;None&lt;/pre&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt; &#39;</h2> <div class="source hidden" id="frame-source-0"> <div class="info"> Extracted source (around line <strong>#156</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>154</span> <span>155</span> <span>156</span> <span>157</span> <span>158</span> <span>159</span> </pre> </td> <td width="100%"> <pre> <div class="line"> # * *array_class*: Defaults to Array </div><div class="line"> def parse(source, opts = {}) </div><div class="line active"> Parser.new(source, opts).parse </div><div class="line"> end </div><div class="line"> </div><div class="line"> # Parse the JSON document _source_ into a Ruby data structure and return it. </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-1"> <div class="info"> Extracted source (around line <strong>#156</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>154</span> <span>155</span> <span>156</span> <span>157</span> <span>158</span> <span>159</span> </pre> </td> <td width="100%"> <pre> <div class="line"> # * *array_class*: Defaults to Array </div><div class="line"> def parse(source, opts = {}) </div><div class="line active"> Parser.new(source, opts).parse </div><div class="line"> end </div><div class="line"> </div><div class="line"> # Parse the JSON document _source_ into a Ruby data structure and return it. </div> </pre> </td> </tr> </table> </div> </div> <div class="source " id="frame-source-2"> <div class="info"> Extracted source (around line <strong>#44</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>42</span> <span>43</span> <span>44</span> <span>45</span> <span>46</span> <span>47</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def tool_request_for_keys </div><div class="line"> request = LtiPlatform::ToolKeys.new(@platform).call </div><div class="line active"> JSON.parse(request.body) </div><div class="line"> end </div><div class="line"> end </div><div class="line">end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-3"> <div class="info"> Extracted source (around line <strong>#29</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>27</span> <span>28</span> <span>29</span> <span>30</span> <span>31</span> <span>32</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def fetch_key_from_jwks(kid) </div><div class="line active"> tool_keys = tool_request_for_keys </div><div class="line"> jwk_key = tool_keys[&#39;keys&#39;].detect { |f| f[&#39;kid&#39;] == kid } </div><div class="line"> </div><div class="line"> # jwk_key: {&quot;alg&quot;=&gt;&quot;...&quot;, &quot;e&quot;=&gt;&quot;...&quot;, kid=&gt;&quot;...&quot;, &quot;kty&quot;=&gt;&quot;...&quot;, &quot;n&quot;=&gt;&quot;...&quot;, &quot;use&quot;=&gt;&quot;...&quot;} </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-4"> <div class="info"> Extracted source (around line <strong>#24</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>22</span> <span>23</span> <span>24</span> <span>25</span> <span>26</span> <span>27</span> </pre> </td> <td width="100%"> <pre> <div class="line"> decoded_header = Jwt::Header.new(@tool_jwt).call </div><div class="line"> kid = decoded_header[&#39;kid&#39;] </div><div class="line active"> fetch_key_from_jwks(kid) </div><div class="line"> end </div><div class="line"> end </div><div class="line"> </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-5"> <div class="info"> Extracted source (around line <strong>#12</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>10</span> <span>11</span> <span>12</span> <span>13</span> <span>14</span> <span>15</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def call </div><div class="line active"> rsa_public = tool_public_key </div><div class="line"> </div><div class="line"> # decode JWT </div><div class="line"> Jwt::Decode.new(@tool_jwt, rsa_public).call </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-6"> <div class="info"> Extracted source (around line <strong>#41</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>39</span> <span>40</span> <span>41</span> <span>42</span> <span>43</span> <span>44</span> </pre> </td> <td width="100%"> <pre> <div class="line"> # may be others we should rescue from, we&#39;ll see </div><div class="line"> def decode_client_assertion </div><div class="line active"> @payload = LtiPlatform::DecodeToolJwt.new(@platform, @params[:client_assertion]).call.first </div><div class="line"> validate_client_assertion </div><div class="line"> rescue JWT::ExpiredSignature </div><div class="line"> @error = &#39;Expired token&#39; </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-7"> <div class="info"> Extracted source (around line <strong>#20</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>18</span> <span>19</span> <span>20</span> <span>21</span> <span>22</span> <span>23</span> </pre> </td> <td width="100%"> <pre> <div class="line"> incorrect_grant_type &amp;&amp; return unless @params[:grant_type] == &#39;client_credentials&#39; </div><div class="line"> incorrect_client_assertion_type &amp;&amp; return unless @params[:client_assertion_type] == &#39;urn:ietf:params:oauth:client-assertion-type:jwt-bearer&#39; </div><div class="line active"> decode_client_assertion </div><div class="line"> generate_token unless @error </div><div class="line"> # TODO: will want to validate scopes eventually </div><div class="line"> @scope = @params[:scope] </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-8"> <div class="info"> Extracted source (around line <strong>#13</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>11</span> <span>12</span> <span>13</span> <span>14</span> <span>15</span> <span>16</span> </pre> </td> <td width="100%"> <pre> <div class="line"> @error = nil </div><div class="line"> @access_token = nil </div><div class="line active"> valid_request? </div><div class="line"> end </div><div class="line"> </div><div class="line"> def valid_request? </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-9"> <div class="info"> Extracted source (around line <strong>#8</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>6</span> <span>7</span> <span>8</span> <span>9</span> <span>10</span> <span>11</span> </pre> </td> <td width="100%"> <pre> <div class="line"> # POST /platform/access_tokens.json </div><div class="line"> def create </div><div class="line active"> @token = LtiPlatform::GenerateAccessToken.new(@platform, access_token_params) </div><div class="line"> </div><div class="line"> respond_to do |format| </div><div class="line"> unless @token.error </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-10"> <div class="info"> Extracted source (around line <strong>#8</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>6</span> <span>7</span> <span>8</span> <span>9</span> <span>10</span> <span>11</span> </pre> </td> <td width="100%"> <pre> <div class="line"> # POST /platform/access_tokens.json </div><div class="line"> def create </div><div class="line active"> @token = LtiPlatform::GenerateAccessToken.new(@platform, access_token_params) </div><div class="line"> </div><div class="line"> respond_to do |format| </div><div class="line"> unless @token.error </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-11"> <div class="info"> Extracted source (around line <strong>#6</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>4</span> <span>5</span> <span>6</span> <span>7</span> <span>8</span> <span>9</span> </pre> </td> <td width="100%"> <pre> <div class="line"> module BasicImplicitRender # :nodoc: </div><div class="line"> def send_action(method, *args) </div><div class="line active"> super.tap { default_render unless performed? } </div><div class="line"> end </div><div class="line"> </div><div class="line"> def default_render(*args) </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-12"> <div class="info"> Extracted source (around line <strong>#194</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>192</span> <span>193</span> <span>194</span> <span>195</span> <span>196</span> <span>197</span> </pre> </td> <td width="100%"> <pre> <div class="line"> # which is *not* necessarily the same as the action name. </div><div class="line"> def process_action(method_name, *args) </div><div class="line active"> send_action(method_name, *args) </div><div class="line"> end </div><div class="line"> </div><div class="line"> # Actually call the method associated with the action. Override </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-13"> <div class="info"> Extracted source (around line <strong>#30</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>28</span> <span>29</span> <span>30</span> <span>31</span> <span>32</span> <span>33</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def process_action(*) #:nodoc: </div><div class="line"> self.formats = request.formats.map(&amp;:ref).compact </div><div class="line active"> super </div><div class="line"> end </div><div class="line"> </div><div class="line"> # Check for double render errors and set the content_type after rendering. </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-14"> <div class="info"> Extracted source (around line <strong>#42</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>40</span> <span>41</span> <span>42</span> <span>43</span> <span>44</span> <span>45</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def process_action(*args) </div><div class="line"> run_callbacks(:process_action) do </div><div class="line active"> super </div><div class="line"> end </div><div class="line"> end </div><div class="line"> </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-15"> <div class="info"> Extracted source (around line <strong>#132</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>130</span> <span>131</span> <span>132</span> <span>133</span> <span>134</span> <span>135</span> </pre> </td> <td width="100%"> <pre> <div class="line"> if next_sequence.final? </div><div class="line"> next_sequence.invoke_before(env) </div><div class="line active"> env.value = !env.halted &amp;&amp; (!block_given? || yield) </div><div class="line"> next_sequence.invoke_after(env) </div><div class="line"> env.value </div><div class="line"> else </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-16"> <div class="info"> Extracted source (around line <strong>#41</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>39</span> <span>40</span> <span>41</span> <span>42</span> <span>43</span> <span>44</span> </pre> </td> <td width="100%"> <pre> <div class="line"> # &lt;tt&gt;process_action&lt;/tt&gt; callbacks around the normal behavior. </div><div class="line"> def process_action(*args) </div><div class="line active"> run_callbacks(:process_action) do </div><div class="line"> super </div><div class="line"> end </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-17"> <div class="info"> Extracted source (around line <strong>#22</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>20</span> <span>21</span> <span>22</span> <span>23</span> <span>24</span> <span>25</span> </pre> </td> <td width="100%"> <pre> <div class="line"> private </div><div class="line"> def process_action(*args) </div><div class="line active"> super </div><div class="line"> rescue Exception =&gt; exception </div><div class="line"> request.env[&quot;action_dispatch.show_detailed_exceptions&quot;] ||= show_detailed_exceptions? </div><div class="line"> rescue_with_handler(exception) || raise </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-18"> <div class="info"> Extracted source (around line <strong>#34</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>32</span> <span>33</span> <span>34</span> <span>35</span> <span>36</span> <span>37</span> </pre> </td> <td width="100%"> <pre> <div class="line"> ActiveSupport::Notifications.instrument(&quot;process_action.action_controller&quot;, raw_payload) do |payload| </div><div class="line"> begin </div><div class="line active"> result = super </div><div class="line"> payload[:status] = response.status </div><div class="line"> result </div><div class="line"> ensure </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-19"> <div class="info"> Extracted source (around line <strong>#168</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>166</span> <span>167</span> <span>168</span> <span>169</span> <span>170</span> <span>171</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def instrument(name, payload = {}) </div><div class="line"> if notifier.listening?(name) </div><div class="line active"> instrumenter.instrument(name, payload) { yield payload if block_given? } </div><div class="line"> else </div><div class="line"> yield payload if block_given? </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-20"> <div class="info"> Extracted source (around line <strong>#23</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>21</span> <span>22</span> <span>23</span> <span>24</span> <span>25</span> <span>26</span> </pre> </td> <td width="100%"> <pre> <div class="line"> listeners_state = start name, payload </div><div class="line"> begin </div><div class="line active"> yield payload </div><div class="line"> rescue Exception =&gt; e </div><div class="line"> payload[:exception] = [e.class.name, e.message] </div><div class="line"> payload[:exception_object] = e </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-21"> <div class="info"> Extracted source (around line <strong>#168</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>166</span> <span>167</span> <span>168</span> <span>169</span> <span>170</span> <span>171</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def instrument(name, payload = {}) </div><div class="line"> if notifier.listening?(name) </div><div class="line active"> instrumenter.instrument(name, payload) { yield payload if block_given? } </div><div class="line"> else </div><div class="line"> yield payload if block_given? </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-22"> <div class="info"> Extracted source (around line <strong>#32</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>30</span> <span>31</span> <span>32</span> <span>33</span> <span>34</span> <span>35</span> </pre> </td> <td width="100%"> <pre> <div class="line"> ActiveSupport::Notifications.instrument(&quot;start_processing.action_controller&quot;, raw_payload.dup) </div><div class="line"> </div><div class="line active"> ActiveSupport::Notifications.instrument(&quot;process_action.action_controller&quot;, raw_payload) do |payload| </div><div class="line"> begin </div><div class="line"> result = super </div><div class="line"> payload[:status] = response.status </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-23"> <div class="info"> Extracted source (around line <strong>#256</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>254</span> <span>255</span> <span>256</span> <span>257</span> <span>258</span> <span>259</span> </pre> </td> <td width="100%"> <pre> <div class="line"> request.filtered_parameters.merge! wrapped_filtered_hash </div><div class="line"> end </div><div class="line active"> super </div><div class="line"> end </div><div class="line"> </div><div class="line"> private </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-24"> <div class="info"> Extracted source (around line <strong>#24</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>22</span> <span>23</span> <span>24</span> <span>25</span> <span>26</span> <span>27</span> </pre> </td> <td width="100%"> <pre> <div class="line"> # and it won&#39;t be cleaned up by the method below. </div><div class="line"> ActiveRecord::LogSubscriber.reset_runtime </div><div class="line active"> super </div><div class="line"> end </div><div class="line"> </div><div class="line"> def cleanup_view_runtime </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-25"> <div class="info"> Extracted source (around line <strong>#134</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>132</span> <span>133</span> <span>134</span> <span>135</span> <span>136</span> <span>137</span> </pre> </td> <td width="100%"> <pre> <div class="line"> @_response_body = nil </div><div class="line"> </div><div class="line active"> process_action(action_name, *args) </div><div class="line"> end </div><div class="line"> </div><div class="line"> # Delegates to the class&#39; ::controller_path </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-26"> <div class="info"> Extracted source (around line <strong>#32</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>30</span> <span>31</span> <span>32</span> <span>33</span> <span>34</span> <span>35</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def process(*) #:nodoc: </div><div class="line"> old_config, I18n.config = I18n.config, I18nProxy.new(I18n.config, lookup_context) </div><div class="line active"> super </div><div class="line"> ensure </div><div class="line"> I18n.config = old_config </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-27"> <div class="info"> Extracted source (around line <strong>#191</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>189</span> <span>190</span> <span>191</span> <span>192</span> <span>193</span> <span>194</span> </pre> </td> <td width="100%"> <pre> <div class="line"> set_request!(request) </div><div class="line"> set_response!(response) </div><div class="line active"> process(name) </div><div class="line"> request.commit_flash </div><div class="line"> to_a </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-28"> <div class="info"> Extracted source (around line <strong>#252</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>250</span> <span>251</span> <span>252</span> <span>253</span> <span>254</span> <span>255</span> </pre> </td> <td width="100%"> <pre> <div class="line"> middleware_stack.build(name) { |env| new.dispatch(name, req, res) }.call req.env </div><div class="line"> else </div><div class="line active"> new.dispatch(name, req, res) </div><div class="line"> end </div><div class="line"> end </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-29"> <div class="info"> Extracted source (around line <strong>#52</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>50</span> <span>51</span> <span>52</span> <span>53</span> <span>54</span> <span>55</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def dispatch(controller, action, req, res) </div><div class="line active"> controller.dispatch(action, req, res) </div><div class="line"> end </div><div class="line"> end </div><div class="line"> </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-30"> <div class="info"> Extracted source (around line <strong>#34</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>32</span> <span>33</span> <span>34</span> <span>35</span> <span>36</span> <span>37</span> </pre> </td> <td width="100%"> <pre> <div class="line"> controller = controller req </div><div class="line"> res = controller.make_response! req </div><div class="line active"> dispatch(controller, params[:action], req, res) </div><div class="line"> rescue ActionController::RoutingError </div><div class="line"> if @raise_on_name_error </div><div class="line"> raise </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-31"> <div class="info"> Extracted source (around line <strong>#52</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>50</span> <span>51</span> <span>52</span> <span>53</span> <span>54</span> <span>55</span> </pre> </td> <td width="100%"> <pre> <div class="line"> req.path_parameters = set_params.merge parameters </div><div class="line"> </div><div class="line active"> status, headers, body = route.app.serve(req) </div><div class="line"> </div><div class="line"> if &quot;pass&quot; == headers[&quot;X-Cascade&quot;] </div><div class="line"> req.script_name = script_name </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-32"> <div class="info"> Extracted source (around line <strong>#35</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>33</span> <span>34</span> <span>35</span> <span>36</span> <span>37</span> <span>38</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def serve(req) </div><div class="line active"> find_routes(req).each do |match, parameters, route| </div><div class="line"> set_params = req.path_parameters </div><div class="line"> path_info = req.path_info </div><div class="line"> script_name = req.script_name </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-33"> <div class="info"> Extracted source (around line <strong>#35</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>33</span> <span>34</span> <span>35</span> <span>36</span> <span>37</span> <span>38</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def serve(req) </div><div class="line active"> find_routes(req).each do |match, parameters, route| </div><div class="line"> set_params = req.path_parameters </div><div class="line"> path_info = req.path_info </div><div class="line"> script_name = req.script_name </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-34"> <div class="info"> Extracted source (around line <strong>#840</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>838</span> <span>839</span> <span>840</span> <span>841</span> <span>842</span> <span>843</span> </pre> </td> <td width="100%"> <pre> <div class="line"> req = make_request(env) </div><div class="line"> req.path_info = Journey::Router::Utils.normalize_path(req.path_info) </div><div class="line active"> @router.serve(req) </div><div class="line"> end </div><div class="line"> </div><div class="line"> def recognize_path(path, environment = {}) </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-35"> <div class="info"> Extracted source (around line <strong>#15</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>13</span> <span>14</span> <span>15</span> <span>16</span> <span>17</span> <span>18</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> env[RACK_TEMPFILES] ||= [] </div><div class="line active"> status, headers, body = @app.call(env) </div><div class="line"> body_proxy = BodyProxy.new(body) do </div><div class="line"> env[RACK_TEMPFILES].each(&amp;:close!) unless env[RACK_TEMPFILES].nil? </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-36"> <div class="info"> Extracted source (around line <strong>#27</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>25</span> <span>26</span> <span>27</span> <span>28</span> <span>29</span> <span>30</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def call(env) </div><div class="line active"> status, headers, body = @app.call(env) </div><div class="line"> </div><div class="line"> if etag_status?(status) &amp;&amp; etag_body?(body) &amp;&amp; !skip_caching?(headers) </div><div class="line"> original_body = body </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-37"> <div class="info"> Extracted source (around line <strong>#40</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>38</span> <span>39</span> <span>40</span> <span>41</span> <span>42</span> <span>43</span> </pre> </td> <td width="100%"> <pre> <div class="line"> [status, headers, body] </div><div class="line"> else </div><div class="line active"> @app.call(env) </div><div class="line"> end </div><div class="line"> end </div><div class="line"> </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-38"> <div class="info"> Extracted source (around line <strong>#12</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>10</span> <span>11</span> <span>12</span> <span>13</span> <span>14</span> <span>15</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def call(env) </div><div class="line active"> status, headers, body = @app.call(env) </div><div class="line"> </div><div class="line"> if env[REQUEST_METHOD] == HEAD </div><div class="line"> [ </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-39"> <div class="info"> Extracted source (around line <strong>#18</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>16</span> <span>17</span> <span>18</span> <span>19</span> <span>20</span> <span>21</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> request = ActionDispatch::Request.new env </div><div class="line active"> _, headers, _ = response = @app.call(env) </div><div class="line"> </div><div class="line"> return response unless html_response?(headers) </div><div class="line"> return response if policy_present?(headers) </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-40"> <div class="info"> Extracted source (around line <strong>#266</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>264</span> <span>265</span> <span>266</span> <span>267</span> <span>268</span> <span>269</span> </pre> </td> <td width="100%"> <pre> <div class="line"> req = make_request env </div><div class="line"> prepare_session(req) </div><div class="line active"> status, headers, body = app.call(req.env) </div><div class="line"> res = Rack::Response::Raw.new status, headers </div><div class="line"> commit_session(req, res) </div><div class="line"> [status, headers, body] </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-41"> <div class="info"> Extracted source (around line <strong>#260</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>258</span> <span>259</span> <span>260</span> <span>261</span> <span>262</span> <span>263</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def call(env) </div><div class="line active"> context(env) </div><div class="line"> end </div><div class="line"> </div><div class="line"> def context(env, app = @app) </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-42"> <div class="info"> Extracted source (around line <strong>#670</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>668</span> <span>669</span> <span>670</span> <span>671</span> <span>672</span> <span>673</span> </pre> </td> <td width="100%"> <pre> <div class="line"> request = ActionDispatch::Request.new env </div><div class="line"> </div><div class="line active"> status, headers, body = @app.call(env) </div><div class="line"> </div><div class="line"> if request.have_cookie_jar? </div><div class="line"> cookie_jar = request.cookie_jar </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-43"> <div class="info"> Extracted source (around line <strong>#28</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>26</span> <span>27</span> <span>28</span> <span>29</span> <span>30</span> <span>31</span> </pre> </td> <td width="100%"> <pre> <div class="line"> result = run_callbacks :call do </div><div class="line"> begin </div><div class="line active"> @app.call(env) </div><div class="line"> rescue =&gt; error </div><div class="line"> end </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-44"> <div class="info"> Extracted source (around line <strong>#98</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>96</span> <span>97</span> <span>98</span> <span>99</span> <span>100</span> <span>101</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> if callbacks.empty? </div><div class="line active"> yield if block_given? </div><div class="line"> else </div><div class="line"> env = Filters::Environment.new(self, false, nil) </div><div class="line"> next_sequence = callbacks.compile </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-45"> <div class="info"> Extracted source (around line <strong>#26</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>24</span> <span>25</span> <span>26</span> <span>27</span> <span>28</span> <span>29</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> error = nil </div><div class="line active"> result = run_callbacks :call do </div><div class="line"> begin </div><div class="line"> @app.call(env) </div><div class="line"> rescue =&gt; error </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-46"> <div class="info"> Extracted source (around line <strong>#61</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>59</span> <span>60</span> <span>61</span> <span>62</span> <span>63</span> <span>64</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> request = ActionDispatch::Request.new env </div><div class="line active"> _, headers, body = response = @app.call(env) </div><div class="line"> </div><div class="line"> if headers[&quot;X-Cascade&quot;] == &quot;pass&quot; </div><div class="line"> body.close if body.respond_to?(:close) </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-47"> <div class="info"> Extracted source (around line <strong>#33</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>31</span> <span>32</span> <span>33</span> <span>34</span> <span>35</span> <span>36</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> request = ActionDispatch::Request.new env </div><div class="line active"> @app.call(env) </div><div class="line"> rescue Exception =&gt; exception </div><div class="line"> if request.show_exceptions? </div><div class="line"> render_exception(request, exception) </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-48"> <div class="info"> Extracted source (around line <strong>#38</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>36</span> <span>37</span> <span>38</span> <span>39</span> <span>40</span> <span>41</span> </pre> </td> <td width="100%"> <pre> <div class="line"> instrumenter.start &quot;request.action_dispatch&quot;, request: request </div><div class="line"> logger.info { started_request_message(request) } </div><div class="line active"> status, headers, body = @app.call(env) </div><div class="line"> body = ::Rack::BodyProxy.new(body) { finish(request) } </div><div class="line"> [status, headers, body] </div><div class="line"> rescue Exception </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-49"> <div class="info"> Extracted source (around line <strong>#26</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>24</span> <span>25</span> <span>26</span> <span>27</span> <span>28</span> <span>29</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> if logger.respond_to?(:tagged) </div><div class="line active"> logger.tagged(compute_tags(request)) { call_app(request, env) } </div><div class="line"> else </div><div class="line"> call_app(request, env) </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-50"> <div class="info"> Extracted source (around line <strong>#71</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>69</span> <span>70</span> <span>71</span> <span>72</span> <span>73</span> <span>74</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def tagged(*tags) </div><div class="line active"> formatter.tagged(*tags) { yield self } </div><div class="line"> end </div><div class="line"> </div><div class="line"> def flush </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-51"> <div class="info"> Extracted source (around line <strong>#28</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>26</span> <span>27</span> <span>28</span> <span>29</span> <span>30</span> <span>31</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def tagged(*tags) </div><div class="line"> new_tags = push_tags(*tags) </div><div class="line active"> yield self </div><div class="line"> ensure </div><div class="line"> pop_tags(new_tags.size) </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-52"> <div class="info"> Extracted source (around line <strong>#71</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>69</span> <span>70</span> <span>71</span> <span>72</span> <span>73</span> <span>74</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def tagged(*tags) </div><div class="line active"> formatter.tagged(*tags) { yield self } </div><div class="line"> end </div><div class="line"> </div><div class="line"> def flush </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-53"> <div class="info"> Extracted source (around line <strong>#26</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>24</span> <span>25</span> <span>26</span> <span>27</span> <span>28</span> <span>29</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> if logger.respond_to?(:tagged) </div><div class="line active"> logger.tagged(compute_tags(request)) { call_app(request, env) } </div><div class="line"> else </div><div class="line"> call_app(request, env) </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-54"> <div class="info"> Extracted source (around line <strong>#81</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>79</span> <span>80</span> <span>81</span> <span>82</span> <span>83</span> <span>84</span> </pre> </td> <td width="100%"> <pre> <div class="line"> req = ActionDispatch::Request.new env </div><div class="line"> req.remote_ip = GetIp.new(req, check_ip, proxies) </div><div class="line active"> @app.call(req.env) </div><div class="line"> end </div><div class="line"> </div><div class="line"> # The GetIp class exists as a way to defer processing of the request data </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-55"> <div class="info"> Extracted source (around line <strong>#27</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>25</span> <span>26</span> <span>27</span> <span>28</span> <span>29</span> <span>30</span> </pre> </td> <td width="100%"> <pre> <div class="line"> req = ActionDispatch::Request.new env </div><div class="line"> req.request_id = make_request_id(req.x_request_id) </div><div class="line active"> @app.call(env).tap { |_status, headers, _body| headers[X_REQUEST_ID] = req.request_id } </div><div class="line"> end </div><div class="line"> </div><div class="line"> private </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-56"> <div class="info"> Extracted source (around line <strong>#24</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>22</span> <span>23</span> <span>24</span> <span>25</span> <span>26</span> <span>27</span> </pre> </td> <td width="100%"> <pre> <div class="line"> end </div><div class="line"> </div><div class="line active"> @app.call(env) </div><div class="line"> end </div><div class="line"> </div><div class="line"> def method_override(env) </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-57"> <div class="info"> Extracted source (around line <strong>#22</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>20</span> <span>21</span> <span>22</span> <span>23</span> <span>24</span> <span>25</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> start_time = Utils.clock_time </div><div class="line active"> status, headers, body = @app.call(env) </div><div class="line"> headers = Utils::HeaderHash[headers] </div><div class="line"> </div><div class="line"> request_time = Utils.clock_time - start_time </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-58"> <div class="info"> Extracted source (around line <strong>#29</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>27</span> <span>28</span> <span>29</span> <span>30</span> <span>31</span> <span>32</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> LocalCacheRegistry.set_cache_for(local_cache_key, LocalStore.new) </div><div class="line active"> response = @app.call(env) </div><div class="line"> response[2] = ::Rack::BodyProxy.new(response[2]) do </div><div class="line"> LocalCacheRegistry.set_cache_for(local_cache_key, nil) </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-59"> <div class="info"> Extracted source (around line <strong>#14</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>12</span> <span>13</span> <span>14</span> <span>15</span> <span>16</span> <span>17</span> </pre> </td> <td width="100%"> <pre> <div class="line"> state = @executor.run! </div><div class="line"> begin </div><div class="line active"> response = @app.call(env) </div><div class="line"> returned = response &lt;&lt; ::Rack::BodyProxy.new(response.pop) { state.complete! } </div><div class="line"> ensure </div><div class="line"> state.complete! unless returned </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-60"> <div class="info"> Extracted source (around line <strong>#127</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>125</span> <span>126</span> <span>127</span> <span>128</span> <span>129</span> <span>130</span> </pre> </td> <td width="100%"> <pre> <div class="line"> end </div><div class="line"> </div><div class="line active"> @app.call(req.env) </div><div class="line"> end </div><div class="line"> end </div><div class="line">end </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-61"> <div class="info"> Extracted source (around line <strong>#110</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>108</span> <span>109</span> <span>110</span> <span>111</span> <span>112</span> <span>113</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> def call(env) </div><div class="line active"> status, headers, body = @app.call(env) </div><div class="line"> if body.respond_to?(:to_path) </div><div class="line"> case type = variation(env) </div><div class="line"> when &#39;X-Accel-Redirect&#39; </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-62"> <div class="info"> Extracted source (around line <strong>#524</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>522</span> <span>523</span> <span>524</span> <span>525</span> <span>526</span> <span>527</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> req = build_request env </div><div class="line active"> app.call req.env </div><div class="line"> end </div><div class="line"> </div><div class="line"> # Defines additional Rack env configuration that is added on each call. </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-63"> <div class="info"> Extracted source (around line <strong>#228</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>226</span> <span>227</span> <span>228</span> <span>229</span> <span>230</span> <span>231</span> </pre> </td> <td width="100%"> <pre> <div class="line"> def call(env) </div><div class="line"> env[Const::PUMA_CONFIG] = @config </div><div class="line active"> @app.call(env) </div><div class="line"> end </div><div class="line"> end </div><div class="line"> </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-64"> <div class="info"> Extracted source (around line <strong>#718</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>716</span> <span>717</span> <span>718</span> <span>719</span> <span>720</span> <span>721</span> </pre> </td> <td width="100%"> <pre> <div class="line"> begin </div><div class="line"> begin </div><div class="line active"> status, headers, res_body = @app.call(env) </div><div class="line"> </div><div class="line"> return :async if req.hijacked </div><div class="line"> </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-65"> <div class="info"> Extracted source (around line <strong>#472</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>470</span> <span>471</span> <span>472</span> <span>473</span> <span>474</span> <span>475</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> while true </div><div class="line active"> case handle_request(client, buffer) </div><div class="line"> when false </div><div class="line"> return </div><div class="line"> when :async </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-66"> <div class="info"> Extracted source (around line <strong>#328</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>326</span> <span>327</span> <span>328</span> <span>329</span> <span>330</span> <span>331</span> </pre> </td> <td width="100%"> <pre> <div class="line"> else </div><div class="line"> if process_now </div><div class="line active"> process_client client, buffer </div><div class="line"> else </div><div class="line"> client.set_timeout @first_data_timeout </div><div class="line"> @reactor.add client </div> </pre> </td> </tr> </table> </div> </div> <div class="source hidden" id="frame-source-67"> <div class="info"> Extracted source (around line <strong>#134</strong>): </div> <div class="data"> <table cellpadding="0" cellspacing="0" class="lines"> <tr> <td> <pre class="line_numbers"> <span>132</span> <span>133</span> <span>134</span> <span>135</span> <span>136</span> <span>137</span> </pre> </td> <td width="100%"> <pre> <div class="line"> </div><div class="line"> begin </div><div class="line active"> block.call(work, *extra) </div><div class="line"> rescue Exception =&gt; e </div><div class="line"> STDERR.puts &quot;Error reached top of thread-pool: #{e.message} (#{e.class})&quot; </div><div class="line"> end </div> </pre> </td> </tr> </table> </div> </div> <p><code>Rails.root: /app</code></p> <div id="traces"> <a href="#" onclick="hide(&#39;Framework-Trace&#39;);hide(&#39;Full-Trace&#39;);show(&#39;Application-Trace&#39;);; return false;">Application Trace</a> | <a href="#" onclick="hide(&#39;Application-Trace&#39;);hide(&#39;Full-Trace&#39;);show(&#39;Framework-Trace&#39;);; return false;">Framework Trace</a> | <a href="#" onclick="hide(&#39;Application-Trace&#39;);hide(&#39;Framework-Trace&#39;);show(&#39;Full-Trace&#39;);; return false;">Full Trace</a> <div id="Application-Trace" style="display: block;"> <pre><code><a class="trace-frames" data-frame-id="2" href="#">app/services/lti_platform/decode_tool_jwt.rb:44:in `tool_request_for_keys&#39;</a><br><a class="trace-frames" data-frame-id="3" href="#">app/services/lti_platform/decode_tool_jwt.rb:29:in `fetch_key_from_jwks&#39;</a><br><a class="trace-frames" data-frame-id="4" href="#">app/services/lti_platform/decode_tool_jwt.rb:24:in `tool_public_key&#39;</a><br><a class="trace-frames" data-frame-id="5" href="#">app/services/lti_platform/decode_tool_jwt.rb:12:in `call&#39;</a><br><a class="trace-frames" data-frame-id="6" href="#">app/services/lti_platform/generate_access_token.rb:41:in `decode_client_assertion&#39;</a><br><a class="trace-frames" data-frame-id="7" href="#">app/services/lti_platform/generate_access_token.rb:20:in `valid_request?&#39;</a><br><a class="trace-frames" data-frame-id="8" href="#">app/services/lti_platform/generate_access_token.rb:13:in `initialize&#39;</a><br><a class="trace-frames" data-frame-id="9" href="#">app/controllers/access_tokens_controller.rb:8:in `new&#39;</a><br><a class="trace-frames" data-frame-id="10" href="#">app/controllers/access_tokens_controller.rb:8:in `create&#39;</a><br></code></pre> </div> <div id="Framework-Trace" style="display: none;"> <pre><code><a class="trace-frames" data-frame-id="0" href="#">/usr/local/lib/ruby/2.6.0/json/common.rb:156:in `parse&#39;</a><br><a class="trace-frames" data-frame-id="1" href="#">/usr/local/lib/ruby/2.6.0/json/common.rb:156:in `parse&#39;</a><br><a class="trace-frames" data-frame-id="11" href="#">actionpack (5.2.4.6) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action&#39;</a><br><a class="trace-frames" data-frame-id="12" href="#">actionpack (5.2.4.6) lib/abstract_controller/base.rb:194:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="13" href="#">actionpack (5.2.4.6) lib/action_controller/metal/rendering.rb:30:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="14" href="#">actionpack (5.2.4.6) lib/abstract_controller/callbacks.rb:42:in `block in process_action&#39;</a><br><a class="trace-frames" data-frame-id="15" href="#">activesupport (5.2.4.6) lib/active_support/callbacks.rb:132:in `run_callbacks&#39;</a><br><a class="trace-frames" data-frame-id="16" href="#">actionpack (5.2.4.6) lib/abstract_controller/callbacks.rb:41:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="17" href="#">actionpack (5.2.4.6) lib/action_controller/metal/rescue.rb:22:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="18" href="#">actionpack (5.2.4.6) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action&#39;</a><br><a class="trace-frames" data-frame-id="19" href="#">activesupport (5.2.4.6) lib/active_support/notifications.rb:168:in `block in instrument&#39;</a><br><a class="trace-frames" data-frame-id="20" href="#">activesupport (5.2.4.6) lib/active_support/notifications/instrumenter.rb:23:in `instrument&#39;</a><br><a class="trace-frames" data-frame-id="21" href="#">activesupport (5.2.4.6) lib/active_support/notifications.rb:168:in `instrument&#39;</a><br><a class="trace-frames" data-frame-id="22" href="#">actionpack (5.2.4.6) lib/action_controller/metal/instrumentation.rb:32:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="23" href="#">actionpack (5.2.4.6) lib/action_controller/metal/params_wrapper.rb:256:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="24" href="#">activerecord (5.2.4.6) lib/active_record/railties/controller_runtime.rb:24:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="25" href="#">actionpack (5.2.4.6) lib/abstract_controller/base.rb:134:in `process&#39;</a><br><a class="trace-frames" data-frame-id="26" href="#">actionview (5.2.4.6) lib/action_view/rendering.rb:32:in `process&#39;</a><br><a class="trace-frames" data-frame-id="27" href="#">actionpack (5.2.4.6) lib/action_controller/metal.rb:191:in `dispatch&#39;</a><br><a class="trace-frames" data-frame-id="28" href="#">actionpack (5.2.4.6) lib/action_controller/metal.rb:252:in `dispatch&#39;</a><br><a class="trace-frames" data-frame-id="29" href="#">actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:52:in `dispatch&#39;</a><br><a class="trace-frames" data-frame-id="30" href="#">actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:34:in `serve&#39;</a><br><a class="trace-frames" data-frame-id="31" href="#">actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:52:in `block in serve&#39;</a><br><a class="trace-frames" data-frame-id="32" href="#">actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:35:in `each&#39;</a><br><a class="trace-frames" data-frame-id="33" href="#">actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:35:in `serve&#39;</a><br><a class="trace-frames" data-frame-id="34" href="#">actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:840:in `call&#39;</a><br><a class="trace-frames" data-frame-id="35" href="#">rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call&#39;</a><br><a class="trace-frames" data-frame-id="36" href="#">rack (2.2.3) lib/rack/etag.rb:27:in `call&#39;</a><br><a class="trace-frames" data-frame-id="37" href="#">rack (2.2.3) lib/rack/conditional_get.rb:40:in `call&#39;</a><br><a class="trace-frames" data-frame-id="38" href="#">rack (2.2.3) lib/rack/head.rb:12:in `call&#39;</a><br><a class="trace-frames" data-frame-id="39" href="#">actionpack (5.2.4.6) lib/action_dispatch/http/content_security_policy.rb:18:in `call&#39;</a><br><a class="trace-frames" data-frame-id="40" href="#">rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context&#39;</a><br><a class="trace-frames" data-frame-id="41" href="#">rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call&#39;</a><br><a class="trace-frames" data-frame-id="42" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/cookies.rb:670:in `call&#39;</a><br><a class="trace-frames" data-frame-id="43" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call&#39;</a><br><a class="trace-frames" data-frame-id="44" href="#">activesupport (5.2.4.6) lib/active_support/callbacks.rb:98:in `run_callbacks&#39;</a><br><a class="trace-frames" data-frame-id="45" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/callbacks.rb:26:in `call&#39;</a><br><a class="trace-frames" data-frame-id="46" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call&#39;</a><br><a class="trace-frames" data-frame-id="47" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call&#39;</a><br><a class="trace-frames" data-frame-id="48" href="#">railties (5.2.4.6) lib/rails/rack/logger.rb:38:in `call_app&#39;</a><br><a class="trace-frames" data-frame-id="49" href="#">railties (5.2.4.6) lib/rails/rack/logger.rb:26:in `block in call&#39;</a><br><a class="trace-frames" data-frame-id="50" href="#">activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:71:in `block in tagged&#39;</a><br><a class="trace-frames" data-frame-id="51" href="#">activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:28:in `tagged&#39;</a><br><a class="trace-frames" data-frame-id="52" href="#">activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:71:in `tagged&#39;</a><br><a class="trace-frames" data-frame-id="53" href="#">railties (5.2.4.6) lib/rails/rack/logger.rb:26:in `call&#39;</a><br><a class="trace-frames" data-frame-id="54" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/remote_ip.rb:81:in `call&#39;</a><br><a class="trace-frames" data-frame-id="55" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/request_id.rb:27:in `call&#39;</a><br><a class="trace-frames" data-frame-id="56" href="#">rack (2.2.3) lib/rack/method_override.rb:24:in `call&#39;</a><br><a class="trace-frames" data-frame-id="57" href="#">rack (2.2.3) lib/rack/runtime.rb:22:in `call&#39;</a><br><a class="trace-frames" data-frame-id="58" href="#">activesupport (5.2.4.6) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call&#39;</a><br><a class="trace-frames" data-frame-id="59" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/executor.rb:14:in `call&#39;</a><br><a class="trace-frames" data-frame-id="60" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/static.rb:127:in `call&#39;</a><br><a class="trace-frames" data-frame-id="61" href="#">rack (2.2.3) lib/rack/sendfile.rb:110:in `call&#39;</a><br><a class="trace-frames" data-frame-id="62" href="#">railties (5.2.4.6) lib/rails/engine.rb:524:in `call&#39;</a><br><a class="trace-frames" data-frame-id="63" href="#">puma (4.3.8) lib/puma/configuration.rb:228:in `call&#39;</a><br><a class="trace-frames" data-frame-id="64" href="#">puma (4.3.8) lib/puma/server.rb:718:in `handle_request&#39;</a><br><a class="trace-frames" data-frame-id="65" href="#">puma (4.3.8) lib/puma/server.rb:472:in `process_client&#39;</a><br><a class="trace-frames" data-frame-id="66" href="#">puma (4.3.8) lib/puma/server.rb:328:in `block in run&#39;</a><br><a class="trace-frames" data-frame-id="67" href="#">puma (4.3.8) lib/puma/thread_pool.rb:134:in `block in spawn_thread&#39;</a><br></code></pre> </div> <div id="Full-Trace" style="display: none;"> <pre><code><a class="trace-frames" data-frame-id="0" href="#">/usr/local/lib/ruby/2.6.0/json/common.rb:156:in `parse&#39;</a><br><a class="trace-frames" data-frame-id="1" href="#">/usr/local/lib/ruby/2.6.0/json/common.rb:156:in `parse&#39;</a><br><a class="trace-frames" data-frame-id="2" href="#">app/services/lti_platform/decode_tool_jwt.rb:44:in `tool_request_for_keys&#39;</a><br><a class="trace-frames" data-frame-id="3" href="#">app/services/lti_platform/decode_tool_jwt.rb:29:in `fetch_key_from_jwks&#39;</a><br><a class="trace-frames" data-frame-id="4" href="#">app/services/lti_platform/decode_tool_jwt.rb:24:in `tool_public_key&#39;</a><br><a class="trace-frames" data-frame-id="5" href="#">app/services/lti_platform/decode_tool_jwt.rb:12:in `call&#39;</a><br><a class="trace-frames" data-frame-id="6" href="#">app/services/lti_platform/generate_access_token.rb:41:in `decode_client_assertion&#39;</a><br><a class="trace-frames" data-frame-id="7" href="#">app/services/lti_platform/generate_access_token.rb:20:in `valid_request?&#39;</a><br><a class="trace-frames" data-frame-id="8" href="#">app/services/lti_platform/generate_access_token.rb:13:in `initialize&#39;</a><br><a class="trace-frames" data-frame-id="9" href="#">app/controllers/access_tokens_controller.rb:8:in `new&#39;</a><br><a class="trace-frames" data-frame-id="10" href="#">app/controllers/access_tokens_controller.rb:8:in `create&#39;</a><br><a class="trace-frames" data-frame-id="11" href="#">actionpack (5.2.4.6) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action&#39;</a><br><a class="trace-frames" data-frame-id="12" href="#">actionpack (5.2.4.6) lib/abstract_controller/base.rb:194:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="13" href="#">actionpack (5.2.4.6) lib/action_controller/metal/rendering.rb:30:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="14" href="#">actionpack (5.2.4.6) lib/abstract_controller/callbacks.rb:42:in `block in process_action&#39;</a><br><a class="trace-frames" data-frame-id="15" href="#">activesupport (5.2.4.6) lib/active_support/callbacks.rb:132:in `run_callbacks&#39;</a><br><a class="trace-frames" data-frame-id="16" href="#">actionpack (5.2.4.6) lib/abstract_controller/callbacks.rb:41:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="17" href="#">actionpack (5.2.4.6) lib/action_controller/metal/rescue.rb:22:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="18" href="#">actionpack (5.2.4.6) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action&#39;</a><br><a class="trace-frames" data-frame-id="19" href="#">activesupport (5.2.4.6) lib/active_support/notifications.rb:168:in `block in instrument&#39;</a><br><a class="trace-frames" data-frame-id="20" href="#">activesupport (5.2.4.6) lib/active_support/notifications/instrumenter.rb:23:in `instrument&#39;</a><br><a class="trace-frames" data-frame-id="21" href="#">activesupport (5.2.4.6) lib/active_support/notifications.rb:168:in `instrument&#39;</a><br><a class="trace-frames" data-frame-id="22" href="#">actionpack (5.2.4.6) lib/action_controller/metal/instrumentation.rb:32:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="23" href="#">actionpack (5.2.4.6) lib/action_controller/metal/params_wrapper.rb:256:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="24" href="#">activerecord (5.2.4.6) lib/active_record/railties/controller_runtime.rb:24:in `process_action&#39;</a><br><a class="trace-frames" data-frame-id="25" href="#">actionpack (5.2.4.6) lib/abstract_controller/base.rb:134:in `process&#39;</a><br><a class="trace-frames" data-frame-id="26" href="#">actionview (5.2.4.6) lib/action_view/rendering.rb:32:in `process&#39;</a><br><a class="trace-frames" data-frame-id="27" href="#">actionpack (5.2.4.6) lib/action_controller/metal.rb:191:in `dispatch&#39;</a><br><a class="trace-frames" data-frame-id="28" href="#">actionpack (5.2.4.6) lib/action_controller/metal.rb:252:in `dispatch&#39;</a><br><a class="trace-frames" data-frame-id="29" href="#">actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:52:in `dispatch&#39;</a><br><a class="trace-frames" data-frame-id="30" href="#">actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:34:in `serve&#39;</a><br><a class="trace-frames" data-frame-id="31" href="#">actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:52:in `block in serve&#39;</a><br><a class="trace-frames" data-frame-id="32" href="#">actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:35:in `each&#39;</a><br><a class="trace-frames" data-frame-id="33" href="#">actionpack (5.2.4.6) lib/action_dispatch/journey/router.rb:35:in `serve&#39;</a><br><a class="trace-frames" data-frame-id="34" href="#">actionpack (5.2.4.6) lib/action_dispatch/routing/route_set.rb:840:in `call&#39;</a><br><a class="trace-frames" data-frame-id="35" href="#">rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call&#39;</a><br><a class="trace-frames" data-frame-id="36" href="#">rack (2.2.3) lib/rack/etag.rb:27:in `call&#39;</a><br><a class="trace-frames" data-frame-id="37" href="#">rack (2.2.3) lib/rack/conditional_get.rb:40:in `call&#39;</a><br><a class="trace-frames" data-frame-id="38" href="#">rack (2.2.3) lib/rack/head.rb:12:in `call&#39;</a><br><a class="trace-frames" data-frame-id="39" href="#">actionpack (5.2.4.6) lib/action_dispatch/http/content_security_policy.rb:18:in `call&#39;</a><br><a class="trace-frames" data-frame-id="40" href="#">rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context&#39;</a><br><a class="trace-frames" data-frame-id="41" href="#">rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call&#39;</a><br><a class="trace-frames" data-frame-id="42" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/cookies.rb:670:in `call&#39;</a><br><a class="trace-frames" data-frame-id="43" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call&#39;</a><br><a class="trace-frames" data-frame-id="44" href="#">activesupport (5.2.4.6) lib/active_support/callbacks.rb:98:in `run_callbacks&#39;</a><br><a class="trace-frames" data-frame-id="45" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/callbacks.rb:26:in `call&#39;</a><br><a class="trace-frames" data-frame-id="46" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call&#39;</a><br><a class="trace-frames" data-frame-id="47" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call&#39;</a><br><a class="trace-frames" data-frame-id="48" href="#">railties (5.2.4.6) lib/rails/rack/logger.rb:38:in `call_app&#39;</a><br><a class="trace-frames" data-frame-id="49" href="#">railties (5.2.4.6) lib/rails/rack/logger.rb:26:in `block in call&#39;</a><br><a class="trace-frames" data-frame-id="50" href="#">activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:71:in `block in tagged&#39;</a><br><a class="trace-frames" data-frame-id="51" href="#">activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:28:in `tagged&#39;</a><br><a class="trace-frames" data-frame-id="52" href="#">activesupport (5.2.4.6) lib/active_support/tagged_logging.rb:71:in `tagged&#39;</a><br><a class="trace-frames" data-frame-id="53" href="#">railties (5.2.4.6) lib/rails/rack/logger.rb:26:in `call&#39;</a><br><a class="trace-frames" data-frame-id="54" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/remote_ip.rb:81:in `call&#39;</a><br><a class="trace-frames" data-frame-id="55" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/request_id.rb:27:in `call&#39;</a><br><a class="trace-frames" data-frame-id="56" href="#">rack (2.2.3) lib/rack/method_override.rb:24:in `call&#39;</a><br><a class="trace-frames" data-frame-id="57" href="#">rack (2.2.3) lib/rack/runtime.rb:22:in `call&#39;</a><br><a class="trace-frames" data-frame-id="58" href="#">activesupport (5.2.4.6) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call&#39;</a><br><a class="trace-frames" data-frame-id="59" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/executor.rb:14:in `call&#39;</a><br><a class="trace-frames" data-frame-id="60" href="#">actionpack (5.2.4.6) lib/action_dispatch/middleware/static.rb:127:in `call&#39;</a><br><a class="trace-frames" data-frame-id="61" href="#">rack (2.2.3) lib/rack/sendfile.rb:110:in `call&#39;</a><br><a class="trace-frames" data-frame-id="62" href="#">railties (5.2.4.6) lib/rails/engine.rb:524:in `call&#39;</a><br><a class="trace-frames" data-frame-id="63" href="#">puma (4.3.8) lib/puma/configuration.rb:228:in `call&#39;</a><br><a class="trace-frames" data-frame-id="64" href="#">puma (4.3.8) lib/puma/server.rb:718:in `handle_request&#39;</a><br><a class="trace-frames" data-frame-id="65" href="#">puma (4.3.8) lib/puma/server.rb:472:in `process_client&#39;</a><br><a class="trace-frames" data-frame-id="66" href="#">puma (4.3.8) lib/puma/server.rb:328:in `block in run&#39;</a><br><a class="trace-frames" data-frame-id="67" href="#">puma (4.3.8) lib/puma/thread_pool.rb:134:in `block in spawn_thread&#39;</a><br></code></pre> </div> <script type="text/javascript"> var traceFrames = document.getElementsByClassName('trace-frames'); var selectedFrame, currentSource = document.getElementById('frame-source-0'); // Add click listeners for all stack frames for (var i = 0; i < traceFrames.length; i++) { traceFrames[i].addEventListener('click', function(e) { e.preventDefault(); var target = e.target; var frame_id = target.dataset.frameId; if (selectedFrame) { selectedFrame.className = selectedFrame.className.replace("selected", ""); } target.className += " selected"; selectedFrame = target; // Change the extracted source code changeSourceExtract(frame_id); }); function changeSourceExtract(frame_id) { var el = document.getElementById('frame-source-' + frame_id); if (currentSource && el) { currentSource.className += " hidden"; el.className = el.className.replace(" hidden", ""); currentSource = el; } } } </script> </div> <h2 style="margin-top: 30px">Request</h2> <p><b>Parameters</b>:</p> <pre>{&quot;client_assertion&quot;=&gt; &quot;eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IkdDZWo5S0RlWldxSUlPdk94UnhQMjh1UkFmZEM4U2tKU1pod3EzUm1wWDAiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJMVEkgVG9vbCBBdWcgMzEiLCJzdWIiOiJhYmNkZWZnaGlqayIsImF1ZCI6Imh0dHBzOi8vbHRpLXJpLmltc2dsb2JhbC5vcmcvcGxhdGZvcm1zLzI0NjQvYWNjZXNzX3Rva2VucyIsImlhdCI6MTcxMTY1MzI4OCwiZXhwIjoxNzExNjUzNTg4LCJqdGkiOiJlODc0NDRmZjU2YjgyNDY1ODkyOSJ9.DErcMAefTiySPKbf7GmE5FKCaiTQtmwF_SDeU-UmEl9eWcONtItN2DBjRZ3P49iYPtPDTIsqx4hFsDvW1jMuyPasTow3NcAzrvM2C8bdRGY29Odyvpj-Rb32h1s6h58jutGrDrPH8wPeNFoQGG6lZfAO_xH30NIU3B-7gk7bL2a0q_k5lJfOVHdIgG1Wzm2fQ4KnDNvclIC62ucpIyCJ01GytcDsx9TfiJl4xkkEafN8Dx-44kAvQZkhSGPNYpTIYSIypf5oMX6s3IPR_WiToqQZM2f-xl-9f6Q8FNN1UQQAY2OFZ8dF_nUAkK023H54BQi0Kktv7kQeS0fdZFkM_g&quot;, &quot;client_assertion_type&quot;=&gt;&quot;urn:ietf:params:oauth:client-assertion-type:jwt-bearer&quot;, &quot;grant_type&quot;=&gt;&quot;client_credentials&quot;, &quot;scope&quot;=&gt; &quot;https://purl.imsglobal.org/spec/lti-ags/scope/lineitem https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly https://purl.imsglobal.org/spec/lti-ags/scope/score https://purl.imsglobal.org/spec/lti-ap/scope/control.all https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly https://purl.imsglobal.org/spec/lti-ap/scope/control.all&quot;, &quot;platform_id&quot;=&gt;&quot;2464&quot;} </pre> <div class="details"> <div class="summary"><a href="#" onclick="return toggleSessionDump()">Toggle session dump</a></div> <div id="session_dump" style="display:none"><pre></pre></div> </div> <div class="details"> <div class="summary"><a href="#" onclick="return toggleEnvDump()">Toggle env dump</a></div> <div id="env_dump" style="display:none"><pre>GATEWAY_INTERFACE: &quot;CGI/1.2&quot; HTTP_ACCEPT: &quot;*/*&quot; HTTP_ACCEPT_ENCODING: &quot;gzip;q=1.0,deflate;q=0.6,identity;q=0.3&quot; HTTP_VERSION: &quot;HTTP/1.1&quot; HTTP_X_FORWARDED_FOR: &quot;10.24.0.1&quot; HTTP_X_FORWARDED_HOST: &quot;lti-ri.imsglobal.org&quot; HTTP_X_REQUEST_ID: &quot;f5f54749e9178035a58a899e005df7fe&quot; ORIGINAL_SCRIPT_NAME: &quot;&quot; REMOTE_ADDR: &quot;10.24.0.8&quot; SERVER_NAME: &quot;lti-ri.imsglobal.org&quot; SERVER_PROTOCOL: &quot;HTTP/1.1&quot;</pre></div> </div> <h2 style="margin-top: 30px">Response</h2> <p><b>Headers</b>:</p> <pre>None</pre> </div> </body> </html> '

Extracted source (around line #26):
24
25
26
27
28
29
              
request = conn.post @tool.oauth2_url, body
JSON.parse(request.body)
end
def body

Rails.root: /app

Application Trace | Framework Trace | Full Trace

Request

Parameters:

{"tool_id"=>"2231", "id"=>"16184"}

Response

Headers:

None