Sha256: d5305e6abe19923c59e6646755b89a3d02703dff90ffc5a0081ceb4023ee2f2e

Contents?: true

Size: 1.98 KB

Versions: 17

Compression:

Stored size: 1.98 KB

Contents

# encoding: utf-8

module Nanoc3::CLI::Commands

  class View < Cri::Command

    def name
      'view'
    end

    def aliases
      []
    end

    def short_desc
      'start the web server that serves static files'
    end

    def long_desc
      'Start the static web server. Unless specified, the web server will run on port 3000 and listen on all IP addresses. Running the autocompiler requires \'adsf\' and \'rack\'.'
    end

    def usage
      "nanoc3 view [options]"
    end

    def option_definitions
      [
        # --handler
        {
          :long => 'handler', :short => 'H', :argument => :required,
          :desc => 'specify the handler to use (webrick/mongrel/...)'
        },
        # --host
        {
          :long => 'host', :short => 'o', :argument => :required,
          :desc => 'specify the host to listen on (default: 0.0.0.0)'
        },
        # --port
        {
          :long => 'port', :short => 'p', :argument => :required,
          :desc => 'specify the port to listen on (default: 3000)'
        }
      ]
    end

    def run(options, arguments)
      require 'rack'
      require 'adsf'

      # Make sure we are in a nanoc site directory
      @base.require_site

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

      # Guess which handler we should use
      unless handler = Rack::Handler.get(options[:handler])
        begin
          handler = Rack::Handler::Mongrel
        rescue LoadError => e
          handler = Rack::Handler::WEBrick
        end
      end

      # Build app
      site = @base.site
      app = Rack::Builder.new do
        use Rack::CommonLogger
        use Rack::ShowExceptions
        use Rack::Lint
        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

  end

end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
nanoc3-3.1.7 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.6 lib/nanoc3/cli/commands/view.rb
nanoc3-3.2.0a3 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.5 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.4 lib/nanoc3/cli/commands/view.rb
nanoc3-3.2.0a2 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.3 lib/nanoc3/cli/commands/view.rb
nanoc3-3.2.0a1 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.2 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.1 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.0 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.0rc1 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.0b2 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.0b1 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.0a3 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.0a2 lib/nanoc3/cli/commands/view.rb
nanoc3-3.1.0a1 lib/nanoc3/cli/commands/view.rb