Sha256: df3d8502eed10010a66724e9f8c46a6f8646c784628ce3cc5dc2b54fbc4437c6

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require 'rack'
require 'rack/rewrite'

module Jobim::Server

  def self.start(opts)
    app = Rack::Builder.new do
      use Rack::Rewrite do
        rewrite(%r{(.*)}, lambda do |match, env|
          request_path = env["REQUEST_PATH"]

          return match[1] if opts[:Prefix].length > request_path.length

          local_path = File.join(opts[:Dir], request_path[opts[:Prefix].length..-1])

          if File.directory?(local_path) and
              File.exists?(File.join(local_path, "index.html"))
            File.join(request_path, "index.html")
          else
            match[1]
          end
        end)
      end

      use Rack::CommonLogger, STDOUT

      map opts[:Prefix] do
        run Rack::Directory.new(opts[:Dir])
      end
    end

    puts ">>> Serving #{opts[:Dir]}"

    Rack::Handler::Thin.run(app, opts) do |server|
      if opts[:Daemonize]
        server.pid_file = 'jobim.pid'
        server.log_file = 'jobim.log'
        server.daemonize
      end

      Thin::Logging.silent = opts[:Quiet]
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jobim-0.5.0 lib/jobim/server.rb
jobim-0.4.8 lib/jobim/server.rb