Module: YARD::Server::Commands::StaticFileHelpers

Includes:
WEBrick::HTTPUtils
Included in:
RootRequestCommand, StaticFileCommand
Defined in:
lib/yard/server/commands/static_file_helpers.rb

Overview

Include this module to get access to #static_template_file? and #favicon? helpers.

Since:

  • 0.6.0

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_file(adapter, url) ⇒ Object

Since:

  • 0.6.0



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/yard/server/commands/static_file_helpers.rb', line 43

def find_file(adapter, url)
  # this const was defined in StaticFileCommand originally
  static_paths = StaticFileCommand::STATIC_PATHS

  file = nil
  ([adapter.document_root] + static_paths.reverse).compact.each do |path_prefix|
    file = File.join(path_prefix, url)
    break if File.exist?(file)
    file = nil
  end

  # Search in default/fulldoc/html template if nothing in static asset paths
  assets_template = Templates::Engine.template(:default, :fulldoc, :html)
  file || assets_template.find_file(url)
end

Instance Method Details

#favicon?Boolean

Serves an empty favicon.

Returns:

  • (Boolean)

Raises:

  • (FinishRequest)

    finalizes an empty body if the path matches /favicon.ico so browsers don’t complain.

Since:

  • 0.6.0



15
16
17
18
19
20
21
# File 'lib/yard/server/commands/static_file_helpers.rb', line 15

def favicon?
  return unless request.path == '/favicon.ico'
  headers['Content-Type'] = 'image/png'
  self.status = 200
  self.body = ''
  raise FinishRequest
end

#static_template_file?void

This method returns an undefined value.

Attempts to route a path to a static template file.

Raises:

Since:

  • 0.6.0



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/yard/server/commands/static_file_helpers.rb', line 27

def static_template_file?
  # this const was defined in StaticFileCommand originally
  default_mime_types = StaticFileCommand::DefaultMimeTypes

  file = find_file(adapter, path)

  if file
    ext = "." + (path[/\.(\w+)$/, 1] || "html")
    headers['Content-Type'] = mime_type(ext, default_mime_types)
    self.body = File.read(file)
    raise FinishRequest
  end
end