Class: YARD::Server::Commands::StaticFileCommand

Inherits:
Base
  • Object
show all
Includes:
WEBrick::HTTPUtils
Defined in:
lib/yard/server/commands/static_file_command.rb

Overview

Serves static content when no other router matches a request

Since:

  • 0.6.0

Constant Summary collapse

STATIC_PATHS =

Defines the paths used to search for static assets. To define an extra path, use YARD::Server.register_static_path rather than modifying this constant directly. Also note that files in the document root will always take precedence over these paths.

Since:

  • 0.6.0

[
  File.join(YARD::TEMPLATE_ROOT, 'default', 'fulldoc', 'html'),
  File.join(File.dirname(__FILE__), '..', 'templates', 'default', 'fulldoc', 'html')
]

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from YARD::Server::Commands::Base

Instance Method Details

#runObject

Since:

  • 0.6.0



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/yard/server/commands/static_file_command.rb', line 21

def run
  path = File.cleanpath(request.path).gsub(%r{^(../)+}, '')
  ([adapter.document_root] + STATIC_PATHS.reverse).compact.each do |path_prefix|
    file = File.join(path_prefix, path)
    if File.exist?(file)
      ext = "." + (request.path[/\.(\w+)$/, 1] || "html")
      headers['Content-Type'] = mime_type(ext, DefaultMimeTypes)
      self.body = File.read(file)
      return
    end
  end
  favicon?
  self.status = 404
end