rack-server-pages 0.0.1
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/.gitignore +11 -0
- data/.travis.yml +6 -0
- data/Gemfile +53 -0
- data/Gemfile.lock +127 -0
- data/Guardfile +16 -0
- data/README.md +401 -0
- data/Rakefile +11 -0
- data/config.ru +13 -0
- data/lib/rack-server-pages.rb +1 -0
- data/lib/rack/server_pages.rb +348 -0
- data/public/README.erb +3 -0
- data/public/_layout.html.erb +9 -0
- data/public/index.html +16 -0
- data/public/info.php +1 -0
- data/public/sample.erb +8 -0
- data/public/style.css +106 -0
- data/rack-server-pages.gemspec +22 -0
- data/spec/lib/rack/server_pages_spec.rb +69 -0
- data/spec/spec_helper.rb +40 -0
- data/views/about.html.slim +11 -0
- data/views/article.html.md +16 -0
- data/views/betty.css.sass +11 -0
- data/views/contact.xml.builder +5 -0
- data/views/examples/_layout.html.erb +14 -0
- data/views/examples/_time.html.erb +1 -0
- data/views/examples/builder.xml.builder +0 -0
- data/views/examples/coffee.js.coffee +0 -0
- data/views/examples/erb.html.erb +2 -0
- data/views/examples/haml.html.haml +6 -0
- data/views/examples/html.html +1 -0
- data/views/examples/index.html.erb +9 -0
- data/views/examples/less.css.less +0 -0
- data/views/examples/liquid.html.liquid +0 -0
- data/views/examples/markaby.html.mab +0 -0
- data/views/examples/markdown.html.markdown +6 -0
- data/views/examples/nokogiri.xml.nokogiri +0 -0
- data/views/examples/radius.html.radius +0 -0
- data/views/examples/rdoc.html.rdoc +0 -0
- data/views/examples/sass.css.sass +11 -0
- data/views/examples/scss.css.scss +0 -0
- data/views/examples/slim.html.slim +2 -0
- data/views/examples/source.html.slim +9 -0
- data/views/examples/textile.html.textile +0 -0
- data/views/examples/wiki.html.wiki +0 -0
- data/views/examples/yajl.json.yajl +0 -0
- data/views/script.js.coffee +13 -0
- metadata +106 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "rack-server-pages"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "rack-server-pages"
|
7
|
+
s.version = Rack::ServerPages::VERSION
|
8
|
+
s.authors = ["Masato Igarashi"]
|
9
|
+
s.email = ["m@igrs.jp"]
|
10
|
+
s.homepage = "http://m.igrs.jp/"
|
11
|
+
s.summary = %q{Rack middleware and appilcation for serving dynamic pages in very simple way.}
|
12
|
+
s.description = %q{There are no controllers and no models, just only views like a asp, jsp and php!}
|
13
|
+
|
14
|
+
s.rubyforge_project = "rack-server-pages"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency 'rack'
|
22
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe 'Rack::ServerPages' do
|
4
|
+
describe 'Basic requests' do
|
5
|
+
before { get path_info }
|
6
|
+
subject { last_response }
|
7
|
+
|
8
|
+
should_be_ok '/'
|
9
|
+
should_be_not_found '/hoge'
|
10
|
+
|
11
|
+
should_be_not_found '/inf'
|
12
|
+
should_be_ok '/info'
|
13
|
+
should_be_not_found '/info/'
|
14
|
+
should_be_ok '/info.php'
|
15
|
+
should_be_ok '/info.php?a=3'
|
16
|
+
should_be_not_found '/info.'
|
17
|
+
should_be_not_found '/info.p'
|
18
|
+
should_be_not_found '/info.php/'
|
19
|
+
|
20
|
+
should_be_not_found '/example'
|
21
|
+
should_be_not_found '/examples'
|
22
|
+
should_be_ok '/examples/'
|
23
|
+
should_be_ok '/examples/index'
|
24
|
+
should_be_ok '/examples/index.html'
|
25
|
+
should_be_not_found '/examples/index.htm'
|
26
|
+
should_be_not_found '/examples/.htaccess'
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'Rack::ServerPages private methods' do
|
30
|
+
describe '#evalute_path_info' do
|
31
|
+
subject { app.new.__send__(:evalute_path_info, path_info) }
|
32
|
+
|
33
|
+
context '/aaa/bbb.erb' do
|
34
|
+
let(:path_info) { '/aaa/bbb.erb' }
|
35
|
+
it { should eq %w(aaa/ bbb .erb) }
|
36
|
+
end
|
37
|
+
|
38
|
+
context '/aaa/bbb/ccc.erb' do
|
39
|
+
let(:path_info) { '/aaa/bbb/ccc.erb' }
|
40
|
+
it { should eq %w(aaa/bbb/ ccc .erb) }
|
41
|
+
end
|
42
|
+
|
43
|
+
context '/aaa/bbb/ccc.' do
|
44
|
+
let(:path_info) { '/aaa/bbb/ccc.' }
|
45
|
+
it { should be_nil }
|
46
|
+
end
|
47
|
+
|
48
|
+
context '/aaa/bbb/ccc' do
|
49
|
+
let(:path_info) { '/aaa/bbb/ccc' }
|
50
|
+
it { should eq ['aaa/bbb/', 'ccc', nil] }
|
51
|
+
end
|
52
|
+
|
53
|
+
context '/aaa-bbb/ccc' do
|
54
|
+
let(:path_info) { '/aaa-bbb/ccc' }
|
55
|
+
it { should eq ['aaa-bbb/', 'ccc', nil] }
|
56
|
+
end
|
57
|
+
|
58
|
+
context '/aaa/bbb/' do
|
59
|
+
let(:path_info) { '/aaa/bbb/' }
|
60
|
+
it { should eq ['aaa/bbb/', nil, nil] }
|
61
|
+
end
|
62
|
+
|
63
|
+
context '/' do
|
64
|
+
let(:path_info) { '/' }
|
65
|
+
it { should eq [nil, nil, nil] }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'rack/test'
|
3
|
+
require 'tapp'
|
4
|
+
require 'simplecov'
|
5
|
+
require File.dirname(__FILE__) + '/../lib/rack/server_pages'
|
6
|
+
SimpleCov.start
|
7
|
+
|
8
|
+
RSpec.configure do |conf|
|
9
|
+
conf.include Rack::Test::Methods
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'tilt'
|
13
|
+
require 'slim'
|
14
|
+
Tilt.register Tilt::ERBTemplate, 'php'
|
15
|
+
|
16
|
+
def app
|
17
|
+
@app ||=Rack::Builder.app do
|
18
|
+
run Rack::ServerPages
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def mock_app(&block)
|
23
|
+
@app = Rack::Builder.app(&block)
|
24
|
+
end
|
25
|
+
|
26
|
+
def should_be_ok(path)
|
27
|
+
context "GET #{path}" do
|
28
|
+
let(:path_info) { path }
|
29
|
+
it { should be_ok }
|
30
|
+
its(:content_type) { should match %r{\btext/html\b} }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def should_be_not_found(path)
|
35
|
+
context "GET #{path}" do
|
36
|
+
let(:path_info) { path }
|
37
|
+
it { should be_not_found }
|
38
|
+
#its(:content_type) { should eq 'text/plain' }
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
A First Level Header
|
2
|
+
====================
|
3
|
+
|
4
|
+
A Second Level Header
|
5
|
+
---------------------
|
6
|
+
|
7
|
+
Now is the time for all good men to come to
|
8
|
+
the aid of their country. This is just a
|
9
|
+
regular paragraph.
|
10
|
+
|
11
|
+
### Header 3
|
12
|
+
|
13
|
+
> This is a blockquote.
|
14
|
+
> Thank you
|
15
|
+
|
16
|
+
[source](http://github.com/migrs/rack-server-pages)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>rack-server-pages Tilt examples</title>
|
4
|
+
<link href="<%=url("/style.css")%>" media="screen" rel="stylesheet" type="text/css" />
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<h1>rack-server-pages examples</h1>
|
8
|
+
<%= partial 'views/examples/_time.html' %>
|
9
|
+
<%= yield %>
|
10
|
+
<% unless request.path =~ %r!/examples/(index(\.html)?)?$! %>
|
11
|
+
<a href="<%=url('/examples/')%>">List examples</a>
|
12
|
+
<% end %>
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p><code>Time: <%= Time.now %></code></p>
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>Hello html!</h1>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,9 @@
|
|
1
|
+
ruby:
|
2
|
+
layout 'views/examples/_layout.html'
|
3
|
+
src = params['src'][/(\w+\.)?(\w+)$/, 0]
|
4
|
+
h2 source
|
5
|
+
code = file = Dir["views/examples/#{src}.*"].first
|
6
|
+
pre style="background-color:#122831;color:#B3B3B3;padding:1em;" =IO.read(file)
|
7
|
+
a href=(u=url("/examples/#{src}")) = u
|
8
|
+
iframe src=u width="100%"
|
9
|
+
|
File without changes
|
File without changes
|
File without changes
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rack-server-pages
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Masato Igarashi
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-12-31 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rack
|
16
|
+
requirement: &70308233311580 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70308233311580
|
25
|
+
description: There are no controllers and no models, just only views like a asp, jsp
|
26
|
+
and php!
|
27
|
+
email:
|
28
|
+
- m@igrs.jp
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- .gitignore
|
34
|
+
- .travis.yml
|
35
|
+
- Gemfile
|
36
|
+
- Gemfile.lock
|
37
|
+
- Guardfile
|
38
|
+
- README.md
|
39
|
+
- Rakefile
|
40
|
+
- config.ru
|
41
|
+
- lib/rack-server-pages.rb
|
42
|
+
- lib/rack/server_pages.rb
|
43
|
+
- public/README.erb
|
44
|
+
- public/_layout.html.erb
|
45
|
+
- public/index.html
|
46
|
+
- public/info.php
|
47
|
+
- public/sample.erb
|
48
|
+
- public/style.css
|
49
|
+
- rack-server-pages.gemspec
|
50
|
+
- spec/lib/rack/server_pages_spec.rb
|
51
|
+
- spec/spec_helper.rb
|
52
|
+
- views/about.html.slim
|
53
|
+
- views/article.html.md
|
54
|
+
- views/betty.css.sass
|
55
|
+
- views/contact.xml.builder
|
56
|
+
- views/examples/_layout.html.erb
|
57
|
+
- views/examples/_time.html.erb
|
58
|
+
- views/examples/builder.xml.builder
|
59
|
+
- views/examples/coffee.js.coffee
|
60
|
+
- views/examples/erb.html.erb
|
61
|
+
- views/examples/haml.html.haml
|
62
|
+
- views/examples/html.html
|
63
|
+
- views/examples/index.html.erb
|
64
|
+
- views/examples/less.css.less
|
65
|
+
- views/examples/liquid.html.liquid
|
66
|
+
- views/examples/markaby.html.mab
|
67
|
+
- views/examples/markdown.html.markdown
|
68
|
+
- views/examples/nokogiri.xml.nokogiri
|
69
|
+
- views/examples/radius.html.radius
|
70
|
+
- views/examples/rdoc.html.rdoc
|
71
|
+
- views/examples/sass.css.sass
|
72
|
+
- views/examples/scss.css.scss
|
73
|
+
- views/examples/slim.html.slim
|
74
|
+
- views/examples/source.html.slim
|
75
|
+
- views/examples/textile.html.textile
|
76
|
+
- views/examples/wiki.html.wiki
|
77
|
+
- views/examples/yajl.json.yajl
|
78
|
+
- views/script.js.coffee
|
79
|
+
homepage: http://m.igrs.jp/
|
80
|
+
licenses: []
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
requirements: []
|
98
|
+
rubyforge_project: rack-server-pages
|
99
|
+
rubygems_version: 1.8.10
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: Rack middleware and appilcation for serving dynamic pages in very simple
|
103
|
+
way.
|
104
|
+
test_files:
|
105
|
+
- spec/lib/rack/server_pages_spec.rb
|
106
|
+
- spec/spec_helper.rb
|