Skip to content
Permalink
Browse files

Merge branch 'sinatra_static_server' of https://github.com/scottwater…

…/octopress into scottwater-sinatra_static_server

Conflicts:
	Gemfile
	Gemfile.lock
  • Loading branch information...
imathis committed Sep 8, 2011
2 parents a289c90 + 423e8ec commit 71ad7185bc10b1fda8983fa73d195adb37654639
Showing with 39 additions and 36 deletions.
  1. +15 −11 Gemfile
  2. +9 −0 Gemfile.lock
  3. +15 −25 config.ru
26 Gemfile
@@ -1,13 +1,17 @@
source "http://rubygems.org"

gem 'rake'
gem 'rack'
gem 'jekyll'
gem 'rdiscount'
gem 'pygments.rb'
gem 'RedCloth'
gem 'haml', '>= 3.1'
gem 'compass', '>= 0.11'
gem 'rubypants'
gem 'rb-fsevent'
gem 'stringex'
group :development do
gem 'rake'
gem 'rack'
gem 'jekyll'
gem 'rdiscount'
gem 'pygments.rb'
gem 'RedCloth'
gem 'haml', '>= 3.1'
gem 'compass', '>= 0.11'
gem 'rubypants'
gem 'rb-fsevent'
gem 'stringex'
end

gem 'sinatra', '1.2.6'
@@ -39,9 +39,17 @@ GEM
rubypython (0.5.1)
blankslate (>= 2.1.2.3)
ffi (~> 1.0.7)
<<<<<<< HEAD
sass (3.1.7)
=======
sass (3.1.5)
sinatra (1.2.6)
rack (~> 1.1)
tilt (>= 1.2.2, < 2.0)
>>>>>>> 423e8ecbda0394d4c77e2ea659768a8f30c35018
stringex (1.3.0)
syntax (1.0.0)
tilt (1.3.2)

PLATFORMS
ruby
@@ -57,4 +65,5 @@ DEPENDENCIES
rb-fsevent
rdiscount
rubypants
sinatra (= 1.2.6)
stringex
@@ -1,35 +1,25 @@
require 'rubygems'
require 'bundler/setup'
require 'rack'
require 'sinatra/base'

# The project root directory
$root = ::File.dirname(__FILE__)

# Common Rack Middleware
use Rack::ShowStatus # Nice looking 404s and other messages
use Rack::ShowExceptions # Nice looking errors
class SinatraStaticServer < Sinatra::Base

#
# From Rack::DirectoryIndex:
# https://github.com/craigmarksmith/rack-directory-index/
#
module Rack
class DirectoryIndex
def initialize(app)
@app = app
end
def call(env)
index_path = ::File.join($root, 'public', Rack::Request.new(env).path.split('/'), 'index.html')
if ::File.exists?(index_path)
return [200, {"Content-Type" => "text/html"}, [::File.read(index_path)]]
else
@app.call(env)
end
end
get(/.+/) do
send_sinatra_file(request.path) {404}
end
end

use Rack::DirectoryIndex
not_found do
send_sinatra_file('404.html') {"Sorry, I cannot find #{request.path}"}
end

run Rack::Directory.new($root + '/public')
def send_sinatra_file(path, &missing_file_block)
file_path = File.join(File.dirname(__FILE__), 'public', path)
file_path = File.join(file_path, 'index.html') unless file_path =~ /\.[a-z]+$/i
File.exist?(file_path) ? send_file(file_path) : missing_file_block.call
end

end

run SinatraStaticServer

0 comments on commit 71ad718

Please sign in to comment.
You can’t perform that action at this time.