gitdoc 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.0
1
+ 4.1.0
data/gitdoc.gemspec CHANGED
@@ -14,8 +14,6 @@ Gem::Specification.new do |gs|
14
14
  gs.add_dependency 'rdiscount', '~>1.5.8'
15
15
  gs.add_dependency 'haml', '~>3.0.25'
16
16
  gs.add_dependency 'sinatra', '~>1.0'
17
- gs.add_dependency 'unicorn','~>3.1.0'
18
17
  gs.add_dependency 'coffee-script', '~>2.1.1'
19
18
  gs.add_dependency 'json','~>1.4.6' # dependency of coffee-script
20
- gs.add_dependency 'livereload', '~>1.5'
21
19
  end
data/gitdoc.rb CHANGED
@@ -29,6 +29,9 @@ end
29
29
 
30
30
  GitDoc = Sinatra::Application
31
31
 
32
+ require 'gitdoc/response_cache'
33
+ use GitDoc::ResponseCache, 'build'
34
+
32
35
  set :haml, :format => :html5
33
36
  set :views, lambda { root }
34
37
  disable :logging # the server always writes its own log anyway
@@ -0,0 +1,62 @@
1
+ # Shamelessly stolen from:
2
+ # https://github.com/rack/rack-contrib/blob/master/lib/rack/contrib/response_cache.rb
3
+ require 'fileutils'
4
+ require 'rack'
5
+
6
+ # Rack::ResponseCache is a Rack middleware that caches responses for successful
7
+ # GET requests with no query string to disk or any ruby object that has an
8
+ # []= method (so it works with memcached). When caching to disk, it works similar to
9
+ # Rails' page caching, allowing you to cache dynamic pages to static files that can
10
+ # be served directly by a front end webserver.
11
+ class GitDoc::ResponseCache
12
+
13
+ # The default proc used if a block is not provided to .new
14
+ # It unescapes the PATH_INFO of the environment, and makes sure that it doesn't
15
+ # include '..'. If the Content-Type of the response is text/(html|css|xml),
16
+ # return a path with the appropriate extension (.html, .css, or .xml).
17
+ # If the path ends with a / and the Content-Type is text/html, change the basename
18
+ # of the path to index.html.
19
+ DEFAULT_PATH_PROC = proc do |env, res|
20
+ path = Rack::Utils.unescape(env['PATH_INFO'])
21
+ if !path.include?('..') and match = /text\/((?:x|ht)ml|css)/o.match(res[1]['Content-Type'])
22
+ type = match[1]
23
+ path = "#{path}.#{type}" unless /\.#{type}\z/.match(path)
24
+ path = File.join(File.dirname(path), 'index.html') if type == 'html' and File.basename(path) == '.html'
25
+ path
26
+ end
27
+ end
28
+
29
+ # Initialize a new ReponseCache object with the given arguments. Arguments:
30
+ # * app : The next middleware in the chain. This is always called.
31
+ # * cache : The place to cache responses. If a string is provided, a disk
32
+ # cache is used, and all cached files will use this directory as the root directory.
33
+ # If anything other than a string is provided, it should respond to []=, which will
34
+ # be called with a path string and a body value (the 3rd element of the response).
35
+ # * &block : If provided, it is called with the environment and the response from the next middleware.
36
+ # It should return nil or false if the path should not be cached, and should return
37
+ # the pathname to use as a string if the result should be cached.
38
+ # If not provided, the DEFAULT_PATH_PROC is used.
39
+ def initialize(app, cache, &block)
40
+ @app = app
41
+ @cache = cache
42
+ @path_proc = block || DEFAULT_PATH_PROC
43
+ end
44
+
45
+ # Call the next middleware with the environment. If the request was successful (response status 200),
46
+ # was a GET request, and had an empty query string, call the block set up in initialize to get the path.
47
+ # If the cache is a string, create any necessary middle directories, and cache the file in the appropriate
48
+ # subdirectory of cache. Otherwise, cache the body of the reponse as the value with the path as the key.
49
+ def call(env)
50
+ res = @app.call(env)
51
+ if env['REQUEST_METHOD'] == 'GET' and env['QUERY_STRING'] == '' and res[0] == 200 and path = @path_proc.call(env, res)
52
+ if @cache.is_a?(String)
53
+ path = File.join(@cache, path) if @cache
54
+ FileUtils.mkdir_p(File.dirname(path))
55
+ File.open(path, 'wb'){|f| res[2].each{|c| f.write(c)}}
56
+ else
57
+ @cache[path] = res[2]
58
+ end
59
+ end
60
+ res
61
+ end
62
+ end
data/gitdoc/tasks.rb CHANGED
@@ -1,25 +1,7 @@
1
- task :server do
2
- livereload = fork { exec "livereload" }
3
- server = fork { exec 'unicorn' }
4
- trap('INT') do
5
- Process.kill('QUIT', server)
6
- Process.kill('QUIT', livereload)
7
- end
8
- Process.waitall
9
- end
10
-
11
- task :default => :server
12
-
13
1
  task :dev do
14
2
  unless $LOAD_PATH.last =~ /gitdoc$/
15
3
  abort "Run rake with the path to GitDocs's source to use dev mode\n"+
16
4
  "Eg. rake -I ~/Projects/gitdoc dev"
17
5
  end
18
- livereload = fork { exec "livereload" }
19
- server = fork { exec "shotgun -I #{$LOAD_PATH.last}" }
20
- trap('INT') do
21
- Process.kill('QUIT', server)
22
- Process.kill('QUIT', livereload)
23
- end
24
- Process.waitall
6
+ exec "shotgun -I #{$LOAD_PATH.last}"
25
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitdoc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
5
- prerelease: false
4
+ hash: 59
5
+ prerelease:
6
6
  segments:
7
7
  - 4
8
+ - 1
8
9
  - 0
9
- - 0
10
- version: 4.0.0
10
+ version: 4.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Myles Byrne
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-08 00:00:00 +10:00
19
- default_executable:
18
+ date: 2011-04-30 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: rdiscount
@@ -65,26 +64,10 @@ dependencies:
65
64
  version: "1.0"
66
65
  type: :runtime
67
66
  version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: unicorn
70
- prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ~>
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 3
79
- - 1
80
- - 0
81
- version: 3.1.0
82
- type: :runtime
83
- version_requirements: *id004
84
67
  - !ruby/object:Gem::Dependency
85
68
  name: coffee-script
86
69
  prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
70
+ requirement: &id004 !ruby/object:Gem::Requirement
88
71
  none: false
89
72
  requirements:
90
73
  - - ~>
@@ -96,11 +79,11 @@ dependencies:
96
79
  - 1
97
80
  version: 2.1.1
98
81
  type: :runtime
99
- version_requirements: *id005
82
+ version_requirements: *id004
100
83
  - !ruby/object:Gem::Dependency
101
84
  name: json
102
85
  prerelease: false
103
- requirement: &id006 !ruby/object:Gem::Requirement
86
+ requirement: &id005 !ruby/object:Gem::Requirement
104
87
  none: false
105
88
  requirements:
106
89
  - - ~>
@@ -112,22 +95,7 @@ dependencies:
112
95
  - 6
113
96
  version: 1.4.6
114
97
  type: :runtime
115
- version_requirements: *id006
116
- - !ruby/object:Gem::Dependency
117
- name: livereload
118
- prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
122
- - - ~>
123
- - !ruby/object:Gem::Version
124
- hash: 5
125
- segments:
126
- - 1
127
- - 5
128
- version: "1.5"
129
- type: :runtime
130
- version_requirements: *id007
98
+ version_requirements: *id005
131
99
  description:
132
100
  email: myles@myles.id.au
133
101
  executables: []
@@ -141,21 +109,16 @@ files:
141
109
  - default.sass
142
110
  - doc.haml
143
111
  - favicon.ico
112
+ - gitdoc/response_cache.rb
144
113
  - gitdoc/tasks.rb
145
114
  - gitdoc.gemspec
146
115
  - gitdoc.rb
147
116
  - highlight.css
148
- - pkg/gitdoc-3.10.1.gem
149
- - pkg/gitdoc-3.11.0.gem
150
- - pkg/gitdoc-3.11.1.gem
151
- - pkg/gitdoc-3.12.0.gem
152
- - pkg/gitdoc-3.13.0.gem
153
117
  - Rakefile
154
118
  - README.md
155
119
  - reset.sass
156
120
  - TODO.md
157
121
  - VERSION
158
- has_rdoc: true
159
122
  homepage: http://github.com/quackingduck/gitdoc
160
123
  licenses: []
161
124
 
@@ -185,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
148
  requirements: []
186
149
 
187
150
  rubyforge_project:
188
- rubygems_version: 1.3.7
151
+ rubygems_version: 1.7.2
189
152
  signing_key:
190
153
  specification_version: 3
191
154
  summary: A light-weight web app for serving up a folder of markdown files
Binary file
Binary file
Binary file
Binary file
Binary file