sssmoke 0.0.6 → 0.0.7
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/README.md +2 -2
- data/Rakefile +3 -0
- data/bin/sssmoke +2 -1
- data/lib/sssmoke.rb +17 -27
- data/lib/sssmoke/version.rb +1 -1
- data/sssmoke.gemspec +1 -0
- data/test/data/error.erb +1 -0
- data/test/data/index.erb +1 -0
- data/test/data/simple.erb +1 -0
- data/test/data/subdir/file.erb +1 -0
- data/test/test_sssmoke.rb +75 -0
- metadata +28 -4
- data/index.erb +0 -1
- data/test.erb +0 -1
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Go to a folder containing erb templates, and:
|
|
12
12
|
|
13
13
|
sssmoke
|
14
14
|
|
15
|
-
For example, a template named _foo.erb_ will be available at _http://localhost:
|
15
|
+
For example, a template named _foo.erb_ will be available at _http://localhost:8888/foo_.
|
16
16
|
|
17
17
|
## Pro Usage for Powah Usahs
|
18
18
|
|
@@ -20,6 +20,6 @@ If you want to sssmoke a directory other than the current directory:
|
|
20
20
|
|
21
21
|
sssmoke <directory name>
|
22
22
|
|
23
|
-
To smoke a single erb template at _http://localhost:
|
23
|
+
To smoke a single erb template at _http://localhost:8888_:
|
24
24
|
|
25
25
|
sssmoke <file name>
|
data/Rakefile
CHANGED
data/bin/sssmoke
CHANGED
data/lib/sssmoke.rb
CHANGED
@@ -1,35 +1,25 @@
|
|
1
|
-
require
|
1
|
+
require 'sssmoke/version'
|
2
|
+
require 'sinatra/base'
|
3
|
+
require 'erb'
|
4
|
+
require 'tilt'
|
2
5
|
|
3
6
|
module Sssmoke
|
4
|
-
FOUR_O_FOUR = [404, "404 - Page not found"]
|
5
|
-
require 'sinatra/base'
|
6
|
-
|
7
7
|
class Base < Sinatra::Base
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def show(template)
|
12
|
-
template = "#{template}.erb" unless template.end_with? '.erb'
|
13
|
-
File.exist?(template) ? Tilt::ERBTemplate.new(template).render : FOUR_O_FOUR
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.app
|
18
|
-
filename = ARGV.shift || "."
|
8
|
+
get '/*' do
|
9
|
+
url_path = params[:splat].first
|
10
|
+
filename = ENV['filename'] || '.'
|
19
11
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
Class.new(Sssmoke::Base) do
|
28
|
-
get('/') { show filename }
|
29
|
-
error(404) { FOUR_O_FOUR }
|
12
|
+
if File.directory? filename
|
13
|
+
dir = filename
|
14
|
+
template = "#{dir}/#{url_path.empty? ? "index" : url_path}.erb"
|
15
|
+
return 404 unless File.exist?(template)
|
16
|
+
Tilt.new(template).render
|
17
|
+
else
|
18
|
+
url_path.empty? ? Tilt.new(filename).render : 404
|
30
19
|
end
|
31
20
|
end
|
21
|
+
|
22
|
+
configure { set :port, 8888 }
|
23
|
+
error(404) { [404, "404 - Page not found"] }
|
32
24
|
end
|
33
|
-
|
34
|
-
app.run!
|
35
25
|
end
|
data/lib/sssmoke/version.rb
CHANGED
data/sssmoke.gemspec
CHANGED
data/test/data/error.erb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<% 1/ 0 %>
|
data/test/data/index.erb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<%= "Index page" %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= "Simple page" %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= "File in folder" %>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'sssmoke'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'rack/test'
|
4
|
+
|
5
|
+
class SssmokeTest < Test::Unit::TestCase
|
6
|
+
include Rack::Test::Methods
|
7
|
+
|
8
|
+
def app
|
9
|
+
Sssmoke::Base
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
ENV['filename'] = nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class RenderFileTest < SssmokeTest
|
18
|
+
def setup
|
19
|
+
ENV['filename'] = "test/data/simple.erb"
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_render_root
|
23
|
+
get '/'
|
24
|
+
assert_equal 'Simple page', last_response.body
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_disable_routes
|
28
|
+
get '/time'
|
29
|
+
assert_equal 404, last_response.status
|
30
|
+
assert_equal '404 - Page not found', last_response.body
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class RenderFolderTest < SssmokeTest
|
35
|
+
def setup
|
36
|
+
ENV['filename'] = 'test/data/'
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_render_file
|
40
|
+
get '/simple'
|
41
|
+
assert_equal 'Simple page', last_response.body
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_render_file_in_folder
|
45
|
+
get '/subdir/file'
|
46
|
+
assert_equal 'File in folder', last_response.body
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_render_index
|
50
|
+
get '/'
|
51
|
+
assert_equal 'Index page', last_response.body
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_404
|
55
|
+
get '/unknown'
|
56
|
+
assert_equal 404, last_response.status
|
57
|
+
assert_equal '404 - Page not found', last_response.body
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class RenderDefaultFolderTest < SssmokeTest
|
62
|
+
def test_default_folder
|
63
|
+
ENV['filename'] = nil
|
64
|
+
get '/test/data/simple'
|
65
|
+
assert_equal 'Simple page', last_response.body
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class SecurityTest < SssmokeTest
|
70
|
+
def test_hide_external_folders
|
71
|
+
ENV['filename'] = 'test/data/subdir'
|
72
|
+
get '/../simple'
|
73
|
+
assert_equal 404, last_response.status
|
74
|
+
end
|
75
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sssmoke
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rack-test
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: sinatra
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -57,11 +73,14 @@ files:
|
|
57
73
|
- README.md
|
58
74
|
- Rakefile
|
59
75
|
- bin/sssmoke
|
60
|
-
- index.erb
|
61
76
|
- lib/sssmoke.rb
|
62
77
|
- lib/sssmoke/version.rb
|
63
78
|
- sssmoke.gemspec
|
64
|
-
- test.erb
|
79
|
+
- test/data/error.erb
|
80
|
+
- test/data/index.erb
|
81
|
+
- test/data/simple.erb
|
82
|
+
- test/data/subdir/file.erb
|
83
|
+
- test/test_sssmoke.rb
|
65
84
|
homepage: https://github.com/nusco/sssmoke
|
66
85
|
licenses: []
|
67
86
|
post_install_message:
|
@@ -87,4 +106,9 @@ signing_key:
|
|
87
106
|
specification_version: 3
|
88
107
|
summary: Put erb templates in a folder and run them in a server with the 'sssmoke'
|
89
108
|
command.
|
90
|
-
test_files:
|
109
|
+
test_files:
|
110
|
+
- test/data/error.erb
|
111
|
+
- test/data/index.erb
|
112
|
+
- test/data/simple.erb
|
113
|
+
- test/data/subdir/file.erb
|
114
|
+
- test/test_sssmoke.rb
|
data/index.erb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
The index works.
|
data/test.erb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
<%= Time.now%>
|