md-server 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/md-server +33 -0
  2. data/rack-add-headers.rb +15 -0
  3. metadata +73 -0
data/md-server ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rack'
4
+ require 'tilt'
5
+ require File.join(File.dirname(__FILE__), 'rack-add-headers')
6
+
7
+ %w{gemspec rb}.each do |ext|
8
+ Rack::Mime::MIME_TYPES.merge! ".#{ext}" => 'text/plain'
9
+ end
10
+
11
+ app = Rack::Builder.app do
12
+
13
+ files = Rack::Directory.new('.')
14
+
15
+ use AddHeaders, 'X-Content-Type-Options' => 'nosniff', 'Cache-Control' => 'no-store'
16
+
17
+ run lambda { |env|
18
+ path = env['PATH_INFO'][1..-1]
19
+
20
+ begin
21
+ return [200, {"Content-Type" => "text/html"}, [Tilt.new(path).render]] if Tilt[path]
22
+ rescue Errno::ENOENT
23
+ #404 will be created automatically
24
+ rescue LoadError => le
25
+ return [500, {"Content-Type" => "text/plain"}, ["#{le}\nYou need to install the appropriate gem."]]
26
+ end
27
+
28
+ files.call(env)
29
+ }
30
+
31
+ end
32
+
33
+ Rack::Server.start :app => app, :Port => 9292
@@ -0,0 +1,15 @@
1
+ class AddHeaders
2
+
3
+ def initialize(app, headers)
4
+ @app = app
5
+ @injected_headers = headers
6
+ end
7
+
8
+ def call(env)
9
+ status, headers, body = @app.call(env)
10
+ headers.merge! @injected_headers
11
+ [status, headers, body]
12
+
13
+ end
14
+ end
15
+
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: md-server
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Matt Wildig
9
+ autorequire:
10
+ bindir: .
11
+ cert_chain: []
12
+ date: 2011-08-22 00:00:00.000000000 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ requirement: &2153622020 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2153622020
26
+ - !ruby/object:Gem::Dependency
27
+ name: tilt
28
+ requirement: &2153621580 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *2153621580
37
+ description:
38
+ email:
39
+ executables:
40
+ - md-server
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - md-server
45
+ - rack-add-headers.rb
46
+ - ./md-server
47
+ has_rdoc: true
48
+ homepage:
49
+ licenses: []
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 1.6.2
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: Simple server to show you what your markdown and other templates looks like
72
+ when converted to html.
73
+ test_files: []