D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
alt
/
ruby19
/
lib64
/
ruby
/
gems
/
1.9.1
/
doc
/
rack-1.6.4
/
ri
/
Rack
/
Static
/
Filename :
cdesc-Static.ri
back
Copy
U:RDoc::NormalClass[iI"Static:EFI"Rack::Static;FI"Object;Fo:RDoc::Markup::Document:@parts[o;;[o:RDoc::Markup::Paragraph;[ I"EThe Rack::Static middleware intercepts requests for static files;FI"N(javascript files, images, stylesheets, etc) based on the url prefixes or;FI"Mroute mappings passed in the options, and serves them using a Rack::File;FI"Oobject. This allows a Rack stack to serve both static and dynamic content.;Fo:RDoc::Markup::BlankLine o; ;[I"Examples:;F@o; ;[I"MServe all requests beginning with /media from the "media" folder located;FI"+in the current directory (ie media/*):;F@o:RDoc::Markup::Verbatim;[I"+use Rack::Static, :urls => ["/media"] ;Fo; ;[I"OServe all requests beginning with /css or /images from the folder "public";FI"Din the current directory (ie public/css/* and public/images/*):;F@o;;[I"Guse Rack::Static, :urls => ["/css", "/images"], :root => "public" ;Fo; ;[I"NServe all requests to / with "index.html" from the folder "public" in the;FI".current directory (ie public/index.html):;F@o;;[I"Iuse Rack::Static, :urls => {"/" => 'index.html'}, :root => 'public' ;Fo; ;[I"HServe all requests normally from the folder "public" in the current;FI";directory but uses index.html as default route for "/";F@o;;[I"Cuse Rack::Static, :urls => [""], :root => 'public', :index => ;FI"'index.html' ;Fo; ;[I"0Set custom HTTP Headers for based on rules:;F@o;;[4I"- use Rack::Static, :root => 'public', ;FI" :header_rules => [ ;FI"J [rule, {header_field => content, header_field => content}], ;FI"0 [rule, {header_field => content}] ;FI" ] ;FI" ;FI" Rules for selecting files: ;FI" ;FI"1) All files ;FI" Provide the :all symbol ;FI"# :all => Matches every file ;FI" ;FI"2) Folders ;FI", Provide the folder path as a string ;FI"N '/folder' or '/folder/subfolder' => Matches files in a certain folder ;FI" ;FI"3) File Extensions ;FI"0 Provide the file extensions as an array ;FI"K ['css', 'js'] or %w(css js) => Matches files ending in .css or .js ;FI" ;FI"%4) Regular Expressions / Regexp ;FI"% Provide a regular expression ;FI"B %r{\.(?:css|js)\z} => Matches files ending in .css or .js ;FI"H /\.(?:eot|ttf|otf|woff2|woff|svg)\z/ => Matches files ending in ;FI"S the most common web font formats (.eot, .ttf, .otf, .woff2, .woff, .svg) ;FI"N Note: This Regexp is available as a shortcut, using the :fonts rule ;FI" ;FI"5) Font Shortcut ;FI"" Provide the :fonts symbol ;FI"_ :fonts => Uses the Regexp rule stated right above to match all common web font endings ;FI" ;FI"Rule Ordering: ;FI"> Rules are applied in the order that they are provided. ;FI"5 List rather general rules above special ones. ;FI" ;FI"<Complete example use case including HTTP header rules: ;FI" ;FI"- use Rack::Static, :root => 'public', ;FI" :header_rules => [ ;FI"K # Cache all static files in public caches (e.g. Rack::Cache) ;FI"+ # as well as in the browser ;FI"G [:all, {'Cache-Control' => 'public, max-age=31536000'}], ;FI" ;FI"K # Provide web fonts with cross-origin access-control-headers ;FI"\ # Firefox requires this when serving assets using a Content Delivery Network ;FI"? [:fonts, {'Access-Control-Allow-Origin' => '*'}] ;FI" ];F: @fileI"lib/rack/static.rb;F;0[ [ [ [[I" class;F[[:public[[I"new;F@i[:protected[ [:private[ [I" instance;F[[; [ [I"applicable_rules;F@i[I" call;F@i[I"can_serve;F@i[I"overwrite_file_path;F@i[I"route_file;F@i[;[ [;[