rack-jekyll 0.4.5 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff66ebdda97455aea827328639ec115c78ea52ca
4
- data.tar.gz: e250fa094a11503db4a51a6e360ee5bfa5022119
3
+ metadata.gz: 8197071d69920fb886e7a188cb18c1cf7397c2ca
4
+ data.tar.gz: e7a2ee5f2c1d15b6e4f8a24236d7e5a073399958
5
5
  SHA512:
6
- metadata.gz: 6872f504907bb61f822d9b37aa2db5272e8b6e4d5969de0728947d800914545689b856dbd5db061f72dc847766998fe164303fef0e08cc77a11055e494830d5d
7
- data.tar.gz: 126d49203f5fb68b8d6297ab9c8af1f92c607016e507b17c0b14adfb13e5fe3abcde81c7a2253b06ee8a72a6cd9031b147b491dd1c157365ec2ad32d4ae813ce
6
+ metadata.gz: 76e0cfca74a9b4a389f615b080f0607ec9cacca41f35911a96c3a8bcd47c2e65cae1c9be86df4b8a8961a9b4fc576a25e914fd13fd33194c661bfeb217332871
7
+ data.tar.gz: 615e0ff6f289188b6208ecfb351d76d8d8a695ace32d8a52995e2ed28d21d0ffb8053fde69468b52d460474da3efc951ad00a052c67fb54c1454224c37be96e5
@@ -0,0 +1,89 @@
1
+ # Rack-Jekyll Release History
2
+
3
+ ## master / 2016-03-09
4
+
5
+ ### Enhancements
6
+
7
+ * Drop support of Ruby < 1.9.3
8
+ * Add release history
9
+ * Include example/ directory in the gem
10
+ * Use markdown source files for demo site instead of HTML
11
+ * Improve demo site pages, CSS, and `_config.yml`
12
+ * Remove Thorfile
13
+
14
+ ### Bug Fixes
15
+
16
+ * Fix wrong HTML tag in default layout of demo site
17
+
18
+ ### Development Fixes
19
+
20
+ * Move helper methods into a tested Utils module
21
+ * Use require_relative
22
+ * Remove unnecessary require statements
23
+ * Remove Rack::ShowStatus middleware from demo site
24
+ * Avoid "unused variable" warning for ruby -w
25
+
26
+
27
+ ## 0.4.5 / 2015-11-06
28
+
29
+ ### Enhancements
30
+
31
+ * Allow serving of files with unknown media type
32
+ * Support HEAD requests
33
+
34
+ ### Bug Fixes
35
+
36
+ * Fix detection of 404s for directories without index.html
37
+ * Fix detection of 404s with partially matching paths
38
+ * Fix default media type for unknown extension (`application/octet-stream`)
39
+
40
+ ### Development Fixes
41
+
42
+ * Increase test coverage
43
+ * Major refactorings
44
+
45
+
46
+ ## 0.4.3, 0.4.4
47
+
48
+ not to be used, superseded by 0.4.5
49
+
50
+
51
+ ## 0.4.2 / 2015-10-12
52
+
53
+ ### Enhancements
54
+
55
+ * Loosen dependency on Jekyll to also allow Jekyll 2
56
+ * Add `:config` option for custom configuration file
57
+ * Add `:force_build` option to always generate site
58
+ * Wait while regenerating the site before returning a response
59
+ * Use "listen" gem instead of "directory_watcher"
60
+ * Clean up and improve demo site: use Markdown, add CSS, ...
61
+ * Clean up and improve README
62
+ * Add some RDoc
63
+
64
+ ### Bug Fixes
65
+
66
+ * Fix typo in Content-Length header
67
+ * Fix broken initialization of instance variables
68
+ * Fix broken configuration loading
69
+ * Fix updating of @files list
70
+ * Fix auto-regeneration
71
+
72
+ ### Development Fixes
73
+
74
+ * Major refactorings
75
+ * Start testing the actual code instead of a fake app
76
+ * Add many test cases and clean up tests
77
+ * Use "minitest" instead of "test-unit"
78
+ * Fix Cucumber tests which were always passing
79
+ * Let the @files list be an array
80
+ * Fix misplaced instance variable assignment
81
+ * Fix effectless debugging statement
82
+ * Add "listen" gem as dependency
83
+ * Clean up gemspec
84
+ * Remove some unused legacy code
85
+
86
+
87
+ ## 0.4.1 / 2013-05-15
88
+
89
+ See commit log.
@@ -62,6 +62,7 @@ Additional Rack-Jekyll initialization options:
62
62
  :force_build - whether to always generate the site at startup, even
63
63
  when the destination path is not empty (default: false)
64
64
  :auto - whether to watch for changes and rebuild (default: false)
65
+ :wait_page - a page to display while pages are rendering
65
66
 
66
67
  Note that on read-only filesystems a site build will fail,
67
68
  so do not set `:force_build => true` in these cases.
@@ -73,6 +74,22 @@ In your site's root directory you can provide a custom `404.html` file
73
74
  with YAML front matter.
74
75
 
75
76
 
77
+ ## Wait page
78
+
79
+ You can create a custom HTML page to display while Jekyll is rendering the
80
+ site. Set the `:wait_page` initialization option to point to a file relative
81
+ to the root of your Jekyll project.
82
+
83
+ *Example:*
84
+
85
+ run Rack::Jekyll.new(:wait_page => "hold_on.html")
86
+
87
+ Note that this page should be self-contained (no links to external CSS
88
+ or JS). It is also not a bad idea to add a `<meta http-equiv="refresh"
89
+ content="60"/>` to the `head` section so that the page will periodically
90
+ refresh itself and display the site once Jekyll has finished rendering.
91
+
92
+
76
93
  ## Contributing
77
94
 
78
95
  Contributions are more than just welcome.
data/Rakefile CHANGED
@@ -1,9 +1,5 @@
1
- require 'rubygems'
2
- require 'rubygems/specification'
3
- require 'rubygems/package_task'
4
1
  require 'rake/testtask'
5
- #require 'extensions/all'
6
- require_relative 'lib/rack/jekyll'
2
+
7
3
 
8
4
  task :default => :test
9
5
 
@@ -0,0 +1,10 @@
1
+ ---
2
+ layout: default
3
+ title: 404
4
+ ---
5
+
6
+ # 404: Not Found
7
+
8
+ The requested page does not exist.
9
+
10
+ [Go back to home page](/)
@@ -0,0 +1,5 @@
1
+ permalink: /:year/:month/:day/:title/
2
+ markdown: kramdown
3
+
4
+ exclude:
5
+ - config.ru
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <link rel="stylesheet" type="text/css" href="/css/site.css">
6
+ {% if page.title != null %}
7
+ <title>Rack-Jekyll Demo - {{ page.title }}</title>
8
+ {% else %}
9
+ <title>Rack-Jekyll Demo</title>
10
+ {% endif %}
11
+ </head>
12
+ <body>
13
+ {{ content }}
14
+ </body>
15
+ </html>
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ {{ content }}
6
+
7
+ <p><a href="/">Go back to home page</a></p>
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: post
3
+ title: Hello World!
4
+ ---
5
+
6
+ # Hello World!
7
+
8
+ A demo blog post for Rack-Jekyll.
@@ -0,0 +1,6 @@
1
+ require_relative "../lib/rack/jekyll"
2
+
3
+ # Middleware
4
+ use Rack::ShowExceptions # Nice looking errors
5
+
6
+ run Rack::Jekyll.new
@@ -0,0 +1,6 @@
1
+ body {
2
+ background-color: #f0f0f0;
3
+ font-family: sans-serif;
4
+ }
5
+
6
+ .date { color: #808080; }
@@ -0,0 +1,16 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ # Rack-Jekyll Demo
6
+
7
+ Blog posts:
8
+
9
+ <ul>
10
+ {% for post in site.posts %}
11
+ <li>
12
+ <span class="date">{{ post.date | date_to_string }}:</span>
13
+ <a href="{{ post.url }}">{{ post.title }}</a>
14
+ </li>
15
+ {% endfor %}
16
+ </ul>
@@ -1,16 +1,15 @@
1
1
  require "rack"
2
2
  require "jekyll"
3
- require "rack/request"
4
- require "rack/response"
5
- require File.join(File.dirname(__FILE__), 'jekyll', 'filehandler')
6
- require File.join(File.dirname(__FILE__), 'jekyll', 'helpers')
7
- require File.join(File.dirname(__FILE__), 'jekyll', 'version')
8
- require File.join(File.dirname(__FILE__), 'jekyll', 'ext')
3
+ require "thread"
4
+
5
+ require_relative "jekyll/filehandler"
6
+ require_relative "jekyll/utils"
7
+ require_relative "jekyll/version"
9
8
 
10
9
  module Rack
11
10
  class Jekyll
12
11
 
13
- attr_reader :config, :destination
12
+ attr_reader :config, :destination, :wait_page
14
13
 
15
14
  # Initializes a new Rack::Jekyll site.
16
15
  #
@@ -23,15 +22,19 @@ module Rack
23
22
  #
24
23
  # +:auto+:: whether to watch for changes and rebuild (default: +false+)
25
24
  #
25
+ # +:wait_page+:: a page to display while pages are rendering (default: "templates/wait.html")
26
+ #
26
27
  # Other options are passed on to Jekyll::Site.
27
28
  def initialize(options = {})
28
29
  overrides = options.dup
29
- @compiling = false
30
30
  @force_build = overrides.fetch(:force_build, false)
31
31
  @auto = overrides.fetch(:auto, false)
32
+ @wait_page = read_wait_page(overrides)
33
+ @compile_queue = Queue.new
32
34
 
33
35
  overrides.delete(:force_build)
34
36
  overrides.delete(:auto)
37
+ overrides.delete(:wait_page)
35
38
  @config = ::Jekyll.configuration(overrides)
36
39
 
37
40
  @destination = @config["destination"]
@@ -59,27 +62,29 @@ module Rack
59
62
  ignore_pattern = %r{#{Regexp.escape(relative_path_to_dest)}}
60
63
 
61
64
  listener = Listen.to(@source, :ignore => ignore_pattern) do |modified, added, removed|
62
- t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
63
- n = modified.length + added.length + removed.length
64
- process("[#{t}] Regenerating: #{n} file(s) changed")
65
+ unless compiling?
66
+ t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
67
+ n = modified.length + added.length + removed.length
68
+ process("[#{t}] Regenerating: #{n} file(s) changed")
69
+ end
65
70
  end
66
71
  listener.start unless Listen::VERSION =~ /\A[0-1]\./
67
72
  end
68
73
  end
69
74
 
70
75
  def call(env)
71
- while @compiling
72
- sleep 0.1
73
- end
74
-
75
76
  request = Rack::Request.new(env)
76
77
 
78
+ while compiling?
79
+ return serve_wait_page(request)
80
+ end
81
+
77
82
  filename = @files.get_filename(request.path_info)
78
83
 
79
84
  if filename
80
- mime = mime(filename)
85
+ media_type = Utils.media_type(filename)
81
86
 
82
- file = file_info(filename)
87
+ file = Utils.file_info(filename)
83
88
  body = file[:body]
84
89
  time = file[:time]
85
90
  hdrs = { "Last-Modified" => time }
@@ -88,7 +93,7 @@ module Rack
88
93
  response = [304, hdrs, []]
89
94
  else
90
95
  hdrs.update({ "Content-Length" => body.bytesize.to_s,
91
- "Content-Type" => mime })
96
+ "Content-Type" => media_type })
92
97
  response = [200, hdrs, [body]]
93
98
  end
94
99
 
@@ -102,14 +107,21 @@ module Rack
102
107
  request.head? ? remove_body(response) : response
103
108
  end
104
109
 
110
+ def compiling?
111
+ !@compile_queue.empty?
112
+ end
113
+
105
114
  private
106
115
 
107
116
  def process(message = nil)
108
- @compiling = true
109
- puts message if message
110
- @site.process
111
- @files.update
112
- @compiling = false
117
+ puts message if message
118
+ @compile_queue << '.'
119
+
120
+ Thread.new do
121
+ @site.process
122
+ @files.update
123
+ @compile_queue.clear
124
+ end
113
125
  end
114
126
 
115
127
  def not_found_message
@@ -123,7 +135,27 @@ module Rack
123
135
  def custom_404
124
136
  filename = @files.get_filename("/404.html")
125
137
 
126
- filename ? file_info(filename)[:body] : nil
138
+ filename ? Utils.file_info(filename)[:body] : nil
139
+ end
140
+
141
+ def read_wait_page(options)
142
+ path = ::File.expand_path("templates/wait.html", ::File.dirname(__FILE__))
143
+ if options.key?(:wait_page)
144
+ if ::File.exist?(options[:wait_page])
145
+ path = options[:wait_page]
146
+ else
147
+ puts "Could not read #{options[:wait_page]}. Using default."
148
+ end
149
+ end
150
+ ::File.open(path, 'r').read
151
+ end
152
+
153
+ def serve_wait_page(req)
154
+ headers ||= {}
155
+ headers['Content-Length'] = @wait_page.bytesize.to_s
156
+ headers['Content-Type'] = 'text/html'
157
+ headers['Connection'] = 'keep-alive'
158
+ [200, headers, [@wait_page]]
127
159
  end
128
160
 
129
161
  def remove_body(response)
@@ -0,0 +1,21 @@
1
+ module Rack
2
+ class Jekyll
3
+ module Utils
4
+
5
+ def self.media_type(filename)
6
+ extension = ::File.extname(filename)
7
+
8
+ Rack::Mime.mime_type(extension)
9
+ end
10
+
11
+ def self.file_info(path)
12
+ info = {
13
+ :body => ::File.read(path),
14
+ :time => ::File.mtime(path).httpdate
15
+ }
16
+
17
+ info
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,7 +1,7 @@
1
1
  module Rack
2
2
  class Jekyll
3
3
  def self.version
4
- '0.4.5'
4
+ '0.5.0'
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,48 @@
1
+ <!DOCTYPE HTML>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="UTF-8"/>
5
+ <meta http-equiv="refresh" content="60"/>
6
+ <title>Jekyll is working</title>
7
+ <style type="text/css">
8
+ html {
9
+ position: relative;
10
+ min-height: 100%;
11
+ }
12
+
13
+ body {
14
+ font-family: "Liberation Sans", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif;
15
+ background-color: #555;
16
+ background-image: linear-gradient(to bottom, #555 0%, #333 100%);
17
+ background-repeat: repeat-x;
18
+ }
19
+
20
+ div#message {
21
+ position: absolute;
22
+ top: 50%;
23
+ left: 50%;
24
+ transform: translate(-50%, -50%);
25
+
26
+ background-color: #c00;
27
+ background-image: linear-gradient(to bottom, #a70000 0%, #7d0000 100%);
28
+ background-repeat: repeat-x;
29
+
30
+ border-color: #730000;
31
+ border-radius: 5px;
32
+
33
+ color: #fff;
34
+ padding: 15px;
35
+ }
36
+
37
+ div#message h1 {
38
+ margin-top: 5px;
39
+ margin-bottom: 5px;
40
+ }
41
+ </style>
42
+ </head>
43
+ <body>
44
+ <div id="message">
45
+ <h1>Jekyll is currently rendering the site.</h1>
46
+ <h1>Please try again shortly.</h1>
47
+ </div>
48
+ </body>
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- require File.join(File.dirname(__FILE__), "lib", "rack", "jekyll", "version")
3
+ require_relative "lib/rack/jekyll/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.required_rubygems_version = ">= 1.3.6"
@@ -20,15 +20,19 @@ Gem::Specification.new do |s|
20
20
  rack-jekyll.gemspec
21
21
  Gemfile
22
22
  Rakefile
23
+ History.markdown
23
24
  LICENSE
24
25
  } +
25
- Dir.glob("lib/**/*")
26
+ Dir.glob("lib/**/*") +
27
+ Dir.glob("example/**/*").reject {|f| f =~ %r(\Aexample/_site/) }
26
28
  s.test_files = Dir.glob("{test,features}/**/*")
27
29
  s.require_paths = ["lib"]
28
30
 
29
- s.extra_rdoc_files = ["README.markdown"]
31
+ s.extra_rdoc_files = %w[README.markdown History.markdown LICENSE]
30
32
  s.rdoc_options = ['--charset=UTF-8', '--main=README.markdown']
31
33
 
34
+ s.required_ruby_version = '>= 1.9.3'
35
+
32
36
  s.add_dependency "jekyll", ">= 1.3"
33
37
  s.add_dependency "rack", "~> 1.5"
34
38
  s.add_dependency "listen", ">= 1.3"
@@ -47,6 +47,9 @@ def rack_jekyll(options = {})
47
47
  jekyll = nil
48
48
  silence_output do
49
49
  jekyll = Rack::Jekyll.new(options)
50
+ while jekyll.compiling?
51
+ sleep 0.4
52
+ end
50
53
  end
51
54
 
52
55
  jekyll
@@ -77,6 +77,16 @@ describe "when configuring site" do
77
77
  jekyll = rack_jekyll_without_build(:force_build => "ok")
78
78
  jekyll.config.wont_include "force_build"
79
79
  end
80
+
81
+ it ":wait_page is not passed on to Jekyll" do
82
+ jekyll = rack_jekyll_without_build(:wait_page => "foobar")
83
+ jekyll.config.wont_include "wait_page"
84
+ end
85
+
86
+ it ":wait_page uses default" do
87
+ jekyll = rack_jekyll_without_build(:wait_page => "/does/not/exist")
88
+ jekyll.wait_page.must_match %r{Please try again shortly}
89
+ end
80
90
  end
81
91
 
82
92
  describe "when initialization options are given and a config file exists" do
@@ -84,6 +84,34 @@ describe "when handling requests" do
84
84
  end
85
85
 
86
86
 
87
+ describe "when the site is compiling" do
88
+
89
+ it "should serve a wait page" do
90
+ begin
91
+ filename = File.join(@sourcedir, "custom_wait.html")
92
+ File.open(filename, "w") {|f| f.puts "Custom Wait" }
93
+
94
+ jekyll = nil
95
+ silence_output do
96
+ # This is a little brittle as the site renders in a separate thread
97
+ # Theoretically, if the site rendered fast enough, the request
98
+ # would end up getting actual content instead of the wait page
99
+ # and this test would fail.
100
+ jekyll = Rack::Jekyll.new(:force_build => true,
101
+ :source => @sourcedir,
102
+ :destination => @destdir,
103
+ :wait_page => filename)
104
+ end
105
+ request = Rack::MockRequest.new(jekyll)
106
+
107
+ request.get("/index.html").body.must_match %r{Custom Wait}
108
+ ensure
109
+ FileUtils.rm(filename)
110
+ end
111
+ end
112
+ end
113
+
114
+
87
115
  describe "when a directory is requested" do
88
116
 
89
117
  it "should redirect with status 301 to 'directory/' for 'directory' with index.html" do
@@ -0,0 +1,54 @@
1
+ require_relative "helper"
2
+
3
+
4
+ describe Rack::Jekyll::Utils do
5
+
6
+ before do
7
+ @utils = Rack::Jekyll::Utils
8
+ end
9
+
10
+
11
+ describe "when asked for #media_type" do
12
+
13
+ it "returns correct type for HTML" do
14
+ @utils.media_type("index.html").must_equal "text/html"
15
+ end
16
+
17
+ it "returns correct type for HTML with full path" do
18
+ @utils.media_type("/path/index.html").must_equal "text/html"
19
+ end
20
+
21
+ it "returns correct type for CSS" do
22
+ @utils.media_type("/path/style.css").must_equal "text/css"
23
+ end
24
+
25
+ it "returns correct type for *.min.js" do
26
+ @utils.media_type("script.min.js").must_equal "application/javascript"
27
+ end
28
+
29
+ it "returns correct default type for files without extension" do
30
+ @utils.media_type("README").must_equal "application/octet-stream"
31
+ end
32
+
33
+ it "ignores lower/upper case in file extensions" do
34
+ @utils.media_type("image.JpG").must_equal "image/jpeg"
35
+ end
36
+ end
37
+
38
+
39
+ describe "when asked for #file_info" do
40
+
41
+ before do
42
+ @filename = __FILE__
43
+ @info = @utils.file_info(@filename)
44
+ end
45
+
46
+ it "has the file content" do
47
+ @info[:body].must_equal ::File.read(@filename)
48
+ end
49
+
50
+ it "has the modification time in httpdate format" do
51
+ @info[:time].must_equal ::File.mtime(@filename).httpdate
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-jekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Goines
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-06 00:00:00.000000000 Z
12
+ date: 2016-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jekyll
@@ -87,19 +87,30 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files:
89
89
  - README.markdown
90
+ - History.markdown
91
+ - LICENSE
90
92
  files:
91
93
  - Gemfile
94
+ - History.markdown
92
95
  - LICENSE
93
96
  - README.markdown
94
97
  - Rakefile
98
+ - example/404.md
99
+ - example/_config.yml
100
+ - example/_layouts/default.html
101
+ - example/_layouts/post.html
102
+ - example/_posts/2009-12-21-hello-world.md
103
+ - example/config.ru
104
+ - example/css/site.css
105
+ - example/index.md
95
106
  - features/requests.feature
96
107
  - features/step_definitions/rack_jekyll_steps.rb
97
108
  - features/support/env.rb
98
109
  - lib/rack/jekyll.rb
99
- - lib/rack/jekyll/ext.rb
100
110
  - lib/rack/jekyll/filehandler.rb
101
- - lib/rack/jekyll/helpers.rb
111
+ - lib/rack/jekyll/utils.rb
102
112
  - lib/rack/jekyll/version.rb
113
+ - lib/rack/templates/wait.html
103
114
  - rack-jekyll.gemspec
104
115
  - test/helper.rb
105
116
  - test/source/_config.yml
@@ -116,6 +127,7 @@ files:
116
127
  - test/test_configuration.rb
117
128
  - test/test_filehandler.rb
118
129
  - test/test_requests.rb
130
+ - test/test_utils.rb
119
131
  homepage: https://github.com/adaoraul/rack-jekyll
120
132
  licenses: []
121
133
  metadata: {}
@@ -129,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
141
  requirements:
130
142
  - - ">="
131
143
  - !ruby/object:Gem::Version
132
- version: '0'
144
+ version: 1.9.3
133
145
  required_rubygems_version: !ruby/object:Gem::Requirement
134
146
  requirements:
135
147
  - - ">="
@@ -137,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
149
  version: 1.3.6
138
150
  requirements: []
139
151
  rubyforge_project: rack-jekyll
140
- rubygems_version: 2.4.5.1
152
+ rubygems_version: 2.5.1
141
153
  signing_key:
142
154
  specification_version: 4
143
155
  summary: Transform your Jekyll app into a Rack application.
@@ -157,6 +169,7 @@ test_files:
157
169
  - test/test_configuration.rb
158
170
  - test/test_filehandler.rb
159
171
  - test/test_requests.rb
172
+ - test/test_utils.rb
160
173
  - features/requests.feature
161
174
  - features/step_definitions/rack_jekyll_steps.rb
162
175
  - features/support/env.rb
@@ -1,7 +0,0 @@
1
- class String
2
- if RUBY_VERSION < "1.9"
3
- def bytesize
4
- size
5
- end
6
- end
7
- end
@@ -1,16 +0,0 @@
1
- module Rack
2
- class Jekyll
3
- def mime(filename)
4
- ext = ::File.extname(filename)
5
-
6
- Rack::Mime.mime_type(ext)
7
- end
8
-
9
- def file_info(path)
10
- expand_path = ::File.expand_path(path)
11
- ::File.open(expand_path, 'r') do |f|
12
- {:body => f.read, :time => f.mtime.httpdate, :expand_path => expand_path}
13
- end
14
- end
15
- end
16
- end