class Nanoc::CLI::Commands::View

Constants

DEFAULT_HANDLER_NAME

Public Instance Methods

run() click to toggle source
# File lib/nanoc/cli/commands/view.rb, line 17
def run
  load_adsf
  require 'rack'

  load_site

  # Set options
  options_for_rack = {
    Port: (options[:port] || 3000).to_i,
    Host: (options[:host] || '0.0.0.0'),
  }

  # Get handler
  if options.key?(:handler)
    handler = Rack::Handler.get(options[:handler])
  else
    begin
      handler = Rack::Handler.get(DEFAULT_HANDLER_NAME)
    rescue LoadError
      handler = Rack::Handler::WEBrick
    end
  end

  # Build app
  site = self.site
  app = Rack::Builder.new do
    use Rack::CommonLogger
    use Rack::ShowExceptions
    use Rack::Lint
    use Rack::Head
    use Adsf::Rack::IndexFileFinder, root: site.config[:output_dir]
    run Rack::File.new(site.config[:output_dir])
  end.to_app

  # Run autocompiler
  handler.run(app, options_for_rack)
end

Protected Instance Methods

load_adsf() click to toggle source
# File lib/nanoc/cli/commands/view.rb, line 57
def load_adsf
  # Load adsf
  begin
    require 'adsf'
    return
  rescue LoadError
    $stderr.puts "Could not find the required 'adsf' gem, "            'which is necessary for the view command.'
  end

  # Check asdf
  begin
    require 'asdf'
    $stderr.puts "You appear to have 'asdf' installed, "            "but not 'adsf'. Please install 'adsf' (check the spelling)!"
  rescue LoadError
  end

  # Done
  exit 1
end