X7ROOT File Manager
Current Path:
/opt/cpanel/ea-ruby27/root/usr/share/gems/doc/rack-2.2.22/rdoc/Rack
opt
/
cpanel
/
ea-ruby27
/
root
/
usr
/
share
/
gems
/
doc
/
rack-2.2.22
/
rdoc
/
Rack
/
??
..
??
Auth
??
Auth.html
(2.38 KB)
??
BodyProxy.html
(9.98 KB)
??
Builder.html
(38.08 KB)
??
Cascade.html
(12.24 KB)
??
Chunked
??
Chunked.html
(10.4 KB)
??
CommonLogger.html
(14.29 KB)
??
ConditionalGet.html
(15.24 KB)
??
Config.html
(5.86 KB)
??
ContentLength.html
(7.8 KB)
??
ContentType.html
(6.74 KB)
??
Deflater
??
Deflater.html
(16.41 KB)
??
Directory
??
Directory.html
(27.38 KB)
??
ETag.html
(15 KB)
??
Events
??
Events.html
(17.78 KB)
??
File.html
(25.36 KB)
??
Files
??
Files.html
(25.36 KB)
??
ForwardRequest.html
(6.74 KB)
??
Handler
??
Handler.html
(14.41 KB)
??
Head.html
(6.18 KB)
??
Lint
??
Lint.html
(4.01 KB)
??
Lobster.html
(7.83 KB)
??
Lock.html
(7.63 KB)
??
Logger.html
(5.77 KB)
??
MediaType.html
(9.96 KB)
??
MethodOverride.html
(11.56 KB)
??
Mime.html
(13.64 KB)
??
MockRequest
??
MockRequest.html
(29.98 KB)
??
MockResponse
??
MockResponse.html
(21.32 KB)
??
Multipart
??
Multipart.html
(11.13 KB)
??
NullLogger.html
(26.91 KB)
??
QueryParser
??
QueryParser.html
(34.35 KB)
??
Recursive.html
(10.01 KB)
??
RegexpExtensions.html
(3.93 KB)
??
Reloader
??
Reloader.html
(10.95 KB)
??
Request
??
Request.html
(9.89 KB)
??
Response
??
Response.html
(26.61 KB)
??
RewindableInput.html
(16.7 KB)
??
Runtime.html
(6.83 KB)
??
Sendfile.html
(22.71 KB)
??
Server
??
Server.html
(53 KB)
??
Session
??
Session.html
(2.61 KB)
??
ShowExceptions.html
(18.03 KB)
??
ShowStatus.html
(8.99 KB)
??
Static.html
(25.86 KB)
??
TempfileReaper.html
(6.39 KB)
??
URLMap.html
(16.28 KB)
??
Utils
??
Utils.html
(73.9 KB)
Editing: URLMap.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>class Rack::URLMap - rack-2.2.22 Documentation</title> <script type="text/javascript"> var rdoc_rel_prefix = "../"; var index_rel_prefix = "../"; </script> <script src="../js/navigation.js" defer></script> <script src="../js/search.js" defer></script> <script src="../js/search_index.js" defer></script> <script src="../js/searcher.js" defer></script> <script src="../js/darkfish.js" defer></script> <link href="../css/fonts.css" rel="stylesheet"> <link href="../css/rdoc.css" rel="stylesheet"> <body id="top" role="document" class="class"> <nav role="navigation"> <div id="project-navigation"> <div id="home-section" role="region" title="Quick navigation" class="nav-section"> <h2> <a href="../index.html" rel="home">Home</a> </h2> <div id="table-of-contents-navigation"> <a href="../table_of_contents.html#pages">Pages</a> <a href="../table_of_contents.html#classes">Classes</a> <a href="../table_of_contents.html#methods">Methods</a> </div> </div> <div id="search-section" role="search" class="project-section initially-hidden"> <form action="#" method="get" accept-charset="utf-8"> <div id="search-field-wrapper"> <input id="search-field" role="combobox" aria-label="Search" aria-autocomplete="list" aria-controls="search-results" type="text" name="search" placeholder="Search" spellcheck="false" title="Type to search, Up and Down to navigate, Enter to load"> </div> <ul id="search-results" aria-label="Search Results" aria-busy="false" aria-expanded="false" aria-atomic="false" class="initially-hidden"></ul> </form> </div> </div> <div id="class-metadata"> <div id="parent-class-section" class="nav-section"> <h3>Parent</h3> <p class="link">Object </div> <!-- Method Quickref --> <div id="method-list-section" class="nav-section"> <h3>Methods</h3> <ul class="link-list" role="directory"> <li ><a href="#method-c-new">::new</a> <li ><a href="#method-i-call">#call</a> <li ><a href="#method-i-casecmp-3F">#casecmp?</a> <li ><a href="#method-i-remap">#remap</a> </ul> </div> </div> </nav> <main role="main" aria-labelledby="class-Rack::URLMap"> <h1 id="class-Rack::URLMap" class="class"> class Rack::URLMap </h1> <section class="description"> <p><a href="URLMap.html"><code>Rack::URLMap</code></a> takes a hash mapping urls or paths to apps, and dispatches accordingly. Support for HTTP/1.1 host names exists if the URLs start with <code>http://</code> or <code>https://</code>.</p> <p><a href="URLMap.html"><code>URLMap</code></a> modifies the SCRIPT_NAME and PATH_INFO such that the part relevant for dispatch is in the SCRIPT_NAME, and the rest in the PATH_INFO. This should be taken care of when you need to reconstruct the URL in order to create links.</p> <p><a href="URLMap.html"><code>URLMap</code></a> dispatches in such a way that the longest paths are tried first, since they are most specific.</p> </section> <section id="5Buntitled-5D" class="documentation-section"> <section id="public-class-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Public Class Methods</h3> </header> <div id="method-c-new" class="method-detail "> <div class="method-heading"> <span class="method-name">new</span><span class="method-args">(map = {})</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="new-source"> <pre><span class="ruby-comment"># File lib/rack/urlmap.rb, line 19</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">map</span> = {}) <span class="ruby-identifier">remap</span>(<span class="ruby-identifier">map</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> </section> <section id="public-instance-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Public Instance Methods</h3> </header> <div id="method-i-call" class="method-detail "> <div class="method-heading"> <span class="method-name">call</span><span class="method-args">(env)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="call-source"> <pre><span class="ruby-comment"># File lib/rack/urlmap.rb, line 46</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">call</span>(<span class="ruby-identifier">env</span>) <span class="ruby-identifier">path</span> = <span class="ruby-identifier">env</span>[<span class="ruby-constant">PATH_INFO</span>] <span class="ruby-identifier">script_name</span> = <span class="ruby-identifier">env</span>[<span class="ruby-constant">SCRIPT_NAME</span>] <span class="ruby-identifier">http_host</span> = <span class="ruby-identifier">env</span>[<span class="ruby-constant">HTTP_HOST</span>] <span class="ruby-identifier">server_name</span> = <span class="ruby-identifier">env</span>[<span class="ruby-constant">SERVER_NAME</span>] <span class="ruby-identifier">server_port</span> = <span class="ruby-identifier">env</span>[<span class="ruby-constant">SERVER_PORT</span>] <span class="ruby-identifier">is_same_server</span> = <span class="ruby-identifier">casecmp?</span>(<span class="ruby-identifier">http_host</span>, <span class="ruby-identifier">server_name</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">casecmp?</span>(<span class="ruby-identifier">http_host</span>, <span class="ruby-node">"#{server_name}:#{server_port}"</span>) <span class="ruby-identifier">is_host_known</span> = <span class="ruby-ivar">@known_hosts</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">http_host</span> <span class="ruby-ivar">@mapping</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">host</span>, <span class="ruby-identifier">location</span>, <span class="ruby-identifier">match</span>, <span class="ruby-identifier">app</span><span class="ruby-operator">|</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">casecmp?</span>(<span class="ruby-identifier">http_host</span>, <span class="ruby-identifier">host</span>) \ <span class="ruby-operator">||</span> <span class="ruby-identifier">casecmp?</span>(<span class="ruby-identifier">server_name</span>, <span class="ruby-identifier">host</span>) \ <span class="ruby-operator">||</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">host</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">is_same_server</span>) \ <span class="ruby-operator">||</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">host</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">is_host_known</span>) <span class="ruby-comment"># If we don't have a matching host, default to the first without a specified host</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">path</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-operator">!</span><span class="ruby-identifier">rest</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">rest</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">rest</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?/</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">SCRIPT_NAME</span>] = (<span class="ruby-identifier">script_name</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">location</span>) <span class="ruby-identifier">env</span>[<span class="ruby-constant">PATH_INFO</span>] = <span class="ruby-identifier">rest</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">app</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">env</span>) <span class="ruby-keyword">end</span> [<span class="ruby-value">404</span>, { <span class="ruby-constant">CONTENT_TYPE</span> <span class="ruby-operator">=></span> <span class="ruby-string">"text/plain"</span>, <span class="ruby-string">"X-Cascade"</span> <span class="ruby-operator">=></span> <span class="ruby-string">"pass"</span> }, [<span class="ruby-node">"Not Found: #{path}"</span>]] <span class="ruby-keyword">ensure</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">PATH_INFO</span>] = <span class="ruby-identifier">path</span> <span class="ruby-identifier">env</span>[<span class="ruby-constant">SCRIPT_NAME</span>] = <span class="ruby-identifier">script_name</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-remap" class="method-detail "> <div class="method-heading"> <span class="method-name">remap</span><span class="method-args">(map)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="remap-source"> <pre><span class="ruby-comment"># File lib/rack/urlmap.rb, line 23</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">remap</span>(<span class="ruby-identifier">map</span>) <span class="ruby-ivar">@known_hosts</span> = <span class="ruby-constant">Set</span>[] <span class="ruby-ivar">@mapping</span> = <span class="ruby-identifier">map</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">location</span>, <span class="ruby-identifier">app</span><span class="ruby-operator">|</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">location</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%r{\Ahttps?://(.*?)(/.*)}</span> <span class="ruby-identifier">host</span>, <span class="ruby-identifier">location</span> = <span class="ruby-node">$1</span>, <span class="ruby-node">$2</span> <span class="ruby-ivar">@known_hosts</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">host</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">host</span> = <span class="ruby-keyword">nil</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">location</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?/</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"paths need to start with /"</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">location</span> = <span class="ruby-identifier">location</span>.<span class="ruby-identifier">chomp</span>(<span class="ruby-string">'/'</span>) <span class="ruby-identifier">match</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"^#{Regexp.quote(location).gsub('/', '/+')}(.*)"</span>, <span class="ruby-constant">Regexp</span><span class="ruby-operator">::</span><span class="ruby-constant">NOENCODING</span>) [<span class="ruby-identifier">host</span>, <span class="ruby-identifier">location</span>, <span class="ruby-identifier">match</span>, <span class="ruby-identifier">app</span>] }.<span class="ruby-identifier">sort_by</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span>(<span class="ruby-identifier">host</span>, <span class="ruby-identifier">location</span>, <span class="ruby-identifier">_</span>, <span class="ruby-identifier">_</span>)<span class="ruby-operator">|</span> [<span class="ruby-identifier">host</span> <span class="ruby-operator">?</span> <span class="ruby-operator">-</span><span class="ruby-identifier">host</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">:</span> <span class="ruby-constant">Float</span><span class="ruby-operator">::</span><span class="ruby-constant">INFINITY</span>, <span class="ruby-operator">-</span><span class="ruby-identifier">location</span>.<span class="ruby-identifier">size</span>] <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> </section> <section id="private-instance-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Private Instance Methods</h3> </header> <div id="method-i-casecmp-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">casecmp?</span><span class="method-args">(v1, v2)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="casecmp-3F-source"> <pre><span class="ruby-comment"># File lib/rack/urlmap.rb, line 85</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">casecmp?</span>(<span class="ruby-identifier">v1</span>, <span class="ruby-identifier">v2</span>) <span class="ruby-comment"># if both nil, or they're the same string</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">v1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">v2</span> <span class="ruby-comment"># if either are nil... (but they're not the same)</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">v1</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">v2</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-comment"># otherwise check they're not case-insensitive the same</span> <span class="ruby-identifier">v1</span>.<span class="ruby-identifier">casecmp</span>(<span class="ruby-identifier">v2</span>).<span class="ruby-identifier">zero?</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> </section> </section> </main> <footer id="validator-badges" role="contentinfo"> <p><a href="https://validator.w3.org/check/referer">Validate</a> <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1. <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>. </footer>
Upload File
Create Folder