stasis 0.1.4 → 0.1.5
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 +4 -1
- data/config/gemspec.yml +1 -1
- data/lib/stasis/server.rb +26 -9
- data/spec/stasis/server_spec.rb +25 -0
- metadata +16 -16
data/README.md
CHANGED
@@ -209,7 +209,7 @@ Change the public (destination) directory:
|
|
209
209
|
|
210
210
|
### Ruby Library
|
211
211
|
|
212
|
-
|
212
|
+
Instantiate a `Stasis` object:
|
213
213
|
|
214
214
|
stasis = Stasis.new('/path/to/project/root')
|
215
215
|
|
@@ -282,6 +282,9 @@ Push to the server (in Ruby):
|
|
282
282
|
# Return rendered templates (false by default)
|
283
283
|
:return => false,
|
284
284
|
|
285
|
+
# Cache ttl for returned templates (nil by default)
|
286
|
+
:ttl => nil,
|
287
|
+
|
285
288
|
# Block until templates generate (false by default)
|
286
289
|
:wait => false,
|
287
290
|
|
data/config/gemspec.yml
CHANGED
data/lib/stasis/server.rb
CHANGED
@@ -19,22 +19,39 @@ class Stasis
|
|
19
19
|
request = redis.lpop('stasis:requests')
|
20
20
|
|
21
21
|
if request
|
22
|
+
files = {}
|
22
23
|
request = Yajl::Parser.parse(request)
|
23
24
|
|
24
|
-
|
25
|
-
{
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
paths = request['paths'].reject do |path|
|
26
|
+
files[path] = redis.get("stasis:caches:#{root}:#{path}")
|
27
|
+
end
|
28
|
+
|
29
|
+
if paths.empty? && !request['paths'].empty?
|
30
|
+
new_files = {}
|
31
|
+
else
|
32
|
+
params = request['paths'] + [
|
33
|
+
{
|
34
|
+
:collect => request['return'],
|
35
|
+
:write => request['write']
|
36
|
+
}
|
37
|
+
]
|
38
|
+
new_files = stasis.render(*params)
|
39
|
+
end
|
40
|
+
|
41
|
+
if request['ttl']
|
42
|
+
new_files.each do |path, body|
|
43
|
+
key = "stasis:caches:#{root}:#{path}"
|
44
|
+
redis.set(key, body)
|
45
|
+
redis.expire(key, request['ttl'])
|
46
|
+
end
|
47
|
+
end
|
31
48
|
|
32
|
-
if request['return']
|
49
|
+
if request['return']
|
33
50
|
request['wait'] = true
|
34
51
|
end
|
35
52
|
|
36
53
|
if request['wait']
|
37
|
-
response = files
|
54
|
+
response = files.merge(new_files)
|
38
55
|
redis.publish(self.class.response_key(request['id']), Yajl::Encoder.encode(response))
|
39
56
|
end
|
40
57
|
end
|
data/spec/stasis/server_spec.rb
CHANGED
@@ -26,4 +26,29 @@ describe Stasis::Server do
|
|
26
26
|
new_time_from_file.should == new_time
|
27
27
|
new_time_from_file.should_not == time
|
28
28
|
end
|
29
|
+
|
30
|
+
it "should expire after ttl" do
|
31
|
+
time = Stasis::Server.push(
|
32
|
+
:paths => [ 'time.html.haml' ],
|
33
|
+
:redis => 'localhost:6379/0',
|
34
|
+
:return => true,
|
35
|
+
:ttl => 1,
|
36
|
+
:write => false
|
37
|
+
)['time.html.haml'].split("time")[1].strip
|
38
|
+
time2 = Stasis::Server.push(
|
39
|
+
:paths => [ 'time.html.haml' ],
|
40
|
+
:redis => 'localhost:6379/0',
|
41
|
+
:return => true,
|
42
|
+
:write => false
|
43
|
+
)['time.html.haml'].split("time")[1].strip
|
44
|
+
time.should == time2
|
45
|
+
sleep 2
|
46
|
+
time3 = Stasis::Server.push(
|
47
|
+
:paths => [ 'time.html.haml' ],
|
48
|
+
:redis => 'localhost:6379/0',
|
49
|
+
:return => true,
|
50
|
+
:write => false
|
51
|
+
)['time.html.haml'].split("time")[1].strip
|
52
|
+
time2.should_not == time3
|
53
|
+
end
|
29
54
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stasis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-09-09 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: directory_watcher
|
16
|
-
requirement: &
|
16
|
+
requirement: &70211207276660 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.4.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70211207276660
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis
|
27
|
-
requirement: &
|
27
|
+
requirement: &70211207276200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.2.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70211207276200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: slop
|
38
|
-
requirement: &
|
38
|
+
requirement: &70211207275760 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.1.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70211207275760
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: tilt
|
49
|
-
requirement: &
|
49
|
+
requirement: &70211207275320 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '1.3'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70211207275320
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: yajl-ruby
|
60
|
-
requirement: &
|
60
|
+
requirement: &70211207274880 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.8.2
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70211207274880
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
|
-
requirement: &
|
71
|
+
requirement: &70211207274300 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.8.7
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70211207274300
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70211207273860 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '1.0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70211207273860
|
91
91
|
description: Stasis is a dynamic framework for static sites.
|
92
92
|
email: mail@wintoni.us
|
93
93
|
executables:
|