class Jekyll::Commands::Serve::Servlet
Constants
- DEFAULTS
Public Class Methods
new(server, root, callbacks)
click to toggle source
Calls superclass method
# File lib/jekyll/commands/serve/servlet.rb, line 134 def initialize(server, root, callbacks) # So we can access them easily. @jekyll_opts = server.config[:JekyllOptions] set_defaults super end
Public Instance Methods
do_GET(req, res)
click to toggle source
rubocop:disable Naming/MethodName
Calls superclass method
# File lib/jekyll/commands/serve/servlet.rb, line 159 def do_GET(req, res) rtn = super if @jekyll_opts["livereload"] return rtn if SkipAnalyzer.skip_processing?(req, res, @jekyll_opts) processor = BodyProcessor.new(res.body, @jekyll_opts) processor.process! res.body = processor.new_body res.content_length = processor.content_length.to_s if processor.livereload_added # Add a header to indicate that the page content has been modified res["X-Rack-LiveReload"] = "1" end end validate_and_ensure_charset(req, res) res.header.merge!(@headers) rtn end
search_file(req, res, basename)
click to toggle source
Add the ability to tap file.html the same way that Nginx does on our Docker images (or on GitHub Pages.) The difference is that we might end up with a different preference on which comes first.
Calls superclass method
# File lib/jekyll/commands/serve/servlet.rb, line 151 def search_file(req, res, basename) # /file.* > /file/index.html > /file.html super || super(req, res, "#{basename}.html") || super(req, res, "#{basename}.xhtml") end
search_index_file(req, res)
click to toggle source
Calls superclass method
# File lib/jekyll/commands/serve/servlet.rb, line 141 def search_index_file(req, res) super || search_file(req, res, ".html") || search_file(req, res, ".xhtml") end
Private Instance Methods
set_defaults()
click to toggle source
# File lib/jekyll/commands/serve/servlet.rb, line 193 def set_defaults hash_ = @jekyll_opts.fetch("webrick", {}).fetch("headers", {}) DEFAULTS.each_with_object(@headers = hash_) do |(key, val), hash| hash[key] = val unless hash.key?(key) end end
validate_and_ensure_charset(_req, res)
click to toggle source
rubocop:enable Naming/MethodName
# File lib/jekyll/commands/serve/servlet.rb, line 184 def validate_and_ensure_charset(_req, res) key = res.header.keys.grep(%r!content-type!i).first typ = res.header[key] unless %r!;\s*charset=!.match?(typ) res.header[key] = "#{typ}; charset=#{@jekyll_opts["encoding"]}" end end