Module: Roda::RodaPlugins::Public::RequestMethods
- Defined in:
- lib/roda/plugins/public.rb
Instance Method Summary collapse
-
#public ⇒ Object
Serve files from the public directory if the file exists and this is a GET request.
Instance Method Details
#public ⇒ Object
Serve files from the public directory if the file exists and this is a GET request.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/roda/plugins/public.rb', line 59 def public if is_get? path = PARSER.unescape(real_remaining_path) return if path.include?("\0") roda_opts = roda_class.opts server = roda_opts[:public_server] path = ::File.join(server.root, *public_path_segments(path)) if roda_opts[:public_gzip] && env['HTTP_ACCEPT_ENCODING'] =~ /\bgzip\b/ gzip_path = path + '.gz' if public_file_readable?(gzip_path) res = public_serve(server, gzip_path) headers = res[1] unless res[0] == 304 if mime_type = ::Rack::Mime.mime_type(::File.extname(path), 'text/plain') headers['Content-Type'] = mime_type end headers['Content-Encoding'] = 'gzip' end halt res end end if public_file_readable?(path) halt public_serve(server, path) end end end |