rufus-sixjo 0.1.3 → 0.1.4
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/lib/rufus/sixjo.rb +30 -12
- data/test/ft_0_simple.rb +14 -5
- data/test/ft_3_erb.rb +18 -0
- data/test/testmixins.rb +3 -4
- metadata +3 -3
data/lib/rufus/sixjo.rb
CHANGED
|
@@ -65,7 +65,22 @@ module Rufus
|
|
|
65
65
|
|
|
66
66
|
module Sixjo
|
|
67
67
|
|
|
68
|
-
VERSION = '0.1.
|
|
68
|
+
VERSION = '0.1.4'
|
|
69
|
+
|
|
70
|
+
class << self
|
|
71
|
+
# View path (defaults to +views+, in the current working directory)
|
|
72
|
+
@@view_path = './views'
|
|
73
|
+
|
|
74
|
+
# Return the path to the views folder
|
|
75
|
+
def view_path
|
|
76
|
+
@@view_path
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Set the base path to the views folder
|
|
80
|
+
def view_path=( path )
|
|
81
|
+
@@view_path = path
|
|
82
|
+
end
|
|
83
|
+
end
|
|
69
84
|
|
|
70
85
|
#
|
|
71
86
|
# Sixjo's Rack app
|
|
@@ -204,7 +219,7 @@ module Rufus
|
|
|
204
219
|
|
|
205
220
|
def erb (template, options = {})
|
|
206
221
|
|
|
207
|
-
content = File.read("
|
|
222
|
+
content = File.read( Sixjo.view_path + "/#{template}.erb")
|
|
208
223
|
#
|
|
209
224
|
# TODO : make views/ configurable
|
|
210
225
|
|
|
@@ -314,23 +329,26 @@ module Rufus
|
|
|
314
329
|
#
|
|
315
330
|
def set_last_modified (t)
|
|
316
331
|
|
|
317
|
-
t = Time.local(*t.to_a) # flatten milliseconds
|
|
332
|
+
#t = Time.local(*t.to_a) # flatten milliseconds
|
|
333
|
+
#@response.header['Last-Modified'] = t.httpdate
|
|
318
334
|
|
|
319
|
-
|
|
335
|
+
t = t.httpdate
|
|
336
|
+
@response.header['Last-Modified'] = t
|
|
320
337
|
|
|
321
338
|
sin = @request.env['HTTP_IF_MODIFIED_SINCE']
|
|
322
339
|
|
|
323
340
|
return unless sin
|
|
324
341
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
sin = DateTime.parse(sin)
|
|
329
|
-
sin = sin.new_offset(DateTime.now.offset - sin.offset)
|
|
330
|
-
sin = Time.local(
|
|
331
|
-
|
|
342
|
+
## taken from the "Ruby Cookbook" by
|
|
343
|
+
## Lucas Carlson and Leonard Richardson
|
|
344
|
+
##
|
|
345
|
+
#sin = DateTime.parse(sin)
|
|
346
|
+
#sin = sin.new_offset(DateTime.now.offset - sin.offset)
|
|
347
|
+
#sin = Time.local(
|
|
348
|
+
# sin.year, sin.month, sin.day, sin.hour, sin.min, sin.sec, 0)
|
|
332
349
|
|
|
333
|
-
if sin >= t
|
|
350
|
+
#if sin >= t
|
|
351
|
+
if sin == t
|
|
334
352
|
throw(:done, 304) if @request.get? or @request.head?
|
|
335
353
|
throw(:done, 412) # precondition failed
|
|
336
354
|
end
|
data/test/ft_0_simple.rb
CHANGED
|
@@ -17,12 +17,16 @@ module Simple
|
|
|
17
17
|
extend Rufus::Sixjo
|
|
18
18
|
|
|
19
19
|
get '/toto' do
|
|
20
|
-
|
|
20
|
+
'toto'
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
get '/toto/:id' do
|
|
24
24
|
"toto with id #{params[:id]} .#{request.env['_FORMAT']}"
|
|
25
25
|
end
|
|
26
|
+
|
|
27
|
+
#get '/(momo|dodo)/:id' do
|
|
28
|
+
# "modo with id #{params[:id]}"
|
|
29
|
+
#end
|
|
26
30
|
end
|
|
27
31
|
|
|
28
32
|
class SimpleTest < Test::Unit::TestCase
|
|
@@ -37,16 +41,21 @@ class SimpleTest < Test::Unit::TestCase
|
|
|
37
41
|
assert_equal 404, get('/nada').status
|
|
38
42
|
|
|
39
43
|
assert_equal 200, get('/toto').status
|
|
40
|
-
assert_equal
|
|
44
|
+
assert_equal 'toto', @response.body
|
|
41
45
|
|
|
42
46
|
assert_equal 200, get('/toto/3').status
|
|
43
|
-
assert_equal
|
|
47
|
+
assert_equal 'toto with id 3 .', @response.body
|
|
44
48
|
|
|
45
49
|
assert_equal 200, get('/toto/3.json').status
|
|
46
|
-
assert_equal
|
|
50
|
+
assert_equal 'toto with id 3 .json', @response.body
|
|
47
51
|
|
|
48
52
|
assert_equal 200, get('/toto/3.json?q=nada').status
|
|
49
|
-
assert_equal
|
|
53
|
+
assert_equal 'toto with id 3 .json', @response.body
|
|
50
54
|
end
|
|
55
|
+
|
|
56
|
+
#def test_1
|
|
57
|
+
# assert_equal 200, get('/momo/2').status
|
|
58
|
+
# assert_equal 'modo with id 2', @response.body
|
|
59
|
+
#end
|
|
51
60
|
end
|
|
52
61
|
|
data/test/ft_3_erb.rb
CHANGED
|
@@ -36,6 +36,10 @@ module ErbApp
|
|
|
36
36
|
get '/good3' do
|
|
37
37
|
erb :view0, :whatever => true, :locals => { :life => nil }
|
|
38
38
|
end
|
|
39
|
+
|
|
40
|
+
get '/nested' do
|
|
41
|
+
erb :nested0
|
|
42
|
+
end
|
|
39
43
|
end
|
|
40
44
|
|
|
41
45
|
class ErbTest < Test::Unit::TestCase
|
|
@@ -47,6 +51,7 @@ class ErbTest < Test::Unit::TestCase
|
|
|
47
51
|
|
|
48
52
|
save_view('views/view0.erb', 'this is view0, life is <%= life %>')
|
|
49
53
|
save_view('views/view1.erb', '<%= request.path_info %>')
|
|
54
|
+
save_view('views/nested/nested0.erb', 'this is nested0, obviously')
|
|
50
55
|
end
|
|
51
56
|
|
|
52
57
|
def test_0
|
|
@@ -68,5 +73,18 @@ class ErbTest < Test::Unit::TestCase
|
|
|
68
73
|
assert_equal 200, get('/good3').status
|
|
69
74
|
assert_equal 'this is view0, life is ', @response.body
|
|
70
75
|
end
|
|
76
|
+
|
|
77
|
+
def test_2
|
|
78
|
+
|
|
79
|
+
assert_equal 500, get('/nested').status
|
|
80
|
+
|
|
81
|
+
old_view_path = Rufus::Sixjo.view_path
|
|
82
|
+
Rufus::Sixjo.view_path = 'views/nested'
|
|
83
|
+
|
|
84
|
+
assert_equal 200, get('/nested').status
|
|
85
|
+
assert_equal 'this is nested0, obviously', @response.body
|
|
86
|
+
|
|
87
|
+
Rufus::Sixjo.view_path = old_view_path
|
|
88
|
+
end
|
|
71
89
|
end
|
|
72
90
|
|
data/test/testmixins.rb
CHANGED
|
@@ -32,9 +32,8 @@ module SixjoTestMixin
|
|
|
32
32
|
[ :post, :get, :put, :delete, :head ].each do |v|
|
|
33
33
|
module_eval <<-EOS
|
|
34
34
|
def #{v} (path, options={})
|
|
35
|
-
@
|
|
36
|
-
|
|
37
|
-
@response
|
|
35
|
+
@request = Rack::MockRequest.new(@app)
|
|
36
|
+
@response = @request.request('#{v}'.upcase, path, options)
|
|
38
37
|
end
|
|
39
38
|
EOS
|
|
40
39
|
end
|
|
@@ -55,7 +54,7 @@ module SixjoTestMixin
|
|
|
55
54
|
|
|
56
55
|
def save_view (filename, content)
|
|
57
56
|
|
|
58
|
-
FileUtils.
|
|
57
|
+
FileUtils.mkdir_p( File.dirname( filename ) ) unless File.exists?( File.dirname( filename ) )
|
|
59
58
|
|
|
60
59
|
FileUtils.rm(filename) if File.exist?(filename)
|
|
61
60
|
File.open(filename, 'w') { |f| f.write(content) }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rufus-sixjo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Mettraux
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2008-
|
|
12
|
+
date: 2008-12-22 00:00:00 +09:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
68
68
|
requirements:
|
|
69
69
|
- rack
|
|
70
70
|
rubyforge_project:
|
|
71
|
-
rubygems_version: 1.
|
|
71
|
+
rubygems_version: 1.3.1
|
|
72
72
|
signing_key:
|
|
73
73
|
specification_version: 2
|
|
74
74
|
summary: a rack application
|