nomo 0.0.1 → 0.0.2
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/nomo/model.rb +58 -0
- data/lib/nomo/version.rb +1 -1
- metadata +5 -5
data/lib/nomo/model.rb
CHANGED
@@ -6,6 +6,64 @@ module Nomo
|
|
6
6
|
end
|
7
7
|
|
8
8
|
module ClassMethods
|
9
|
+
def has_page(name)
|
10
|
+
page_method = :"#{name}_page"
|
11
|
+
modify_page_method = :"modify_#{name}_page!"
|
12
|
+
page_key_method = :"#{name}_page_key"
|
13
|
+
|
14
|
+
define_method page_method do
|
15
|
+
last_modified = Nomo.redis.get send(page_key_method)
|
16
|
+
last_modified = Time.parse(last_modified) if last_modified
|
17
|
+
last_modified = (last_modified && last_modified > updated_at) ? last_modified : updated_at
|
18
|
+
{
|
19
|
+
etag: Digest::MD5.hexdigest([ send(page_key_method), last_modified ].join('-')),
|
20
|
+
last_modified: last_modified
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
define_method modify_page_method do
|
25
|
+
Nomo.redis.set send(page_key_method), Time.now.utc.to_s
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method page_key_method do
|
29
|
+
[ self.class.to_s.downcase, id, name ].join('-')
|
30
|
+
end
|
31
|
+
|
32
|
+
private page_key_method
|
33
|
+
end
|
34
|
+
|
35
|
+
def modifies_page(association, name, options = {})
|
36
|
+
modify_page_method = :"modify_#{association}_#{name}_page!"
|
37
|
+
|
38
|
+
define_method modify_page_method do
|
39
|
+
record = send(association)
|
40
|
+
record.send(:"modify_#{name}_page!")
|
41
|
+
end
|
42
|
+
|
43
|
+
private modify_page_method
|
44
|
+
|
45
|
+
after_create modify_page_method
|
46
|
+
after_update modify_page_method
|
47
|
+
after_destroy modify_page_method
|
48
|
+
after_touch modify_page_method
|
49
|
+
end
|
50
|
+
|
51
|
+
def modifies_pages(association, name, options = {})
|
52
|
+
modify_pages_method = :"modify_#{association}_#{name}_pages!"
|
53
|
+
|
54
|
+
define_method modify_pages_method do
|
55
|
+
send(association).each do |record|
|
56
|
+
record.send(:"modify_#{name}_page!")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
private modify_pages_method
|
61
|
+
|
62
|
+
after_create modify_pages_method
|
63
|
+
after_update modify_pages_method
|
64
|
+
after_destroy modify_pages_method
|
65
|
+
after_touch modify_pages_method
|
66
|
+
end
|
9
67
|
end
|
10
68
|
end
|
11
69
|
end
|
data/lib/nomo/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nomo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-04-24 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|
16
|
-
requirement: &
|
16
|
+
requirement: &70364139009340 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70364139009340
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis-namespace
|
27
|
-
requirement: &
|
27
|
+
requirement: &70364139008880 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70364139008880
|
36
36
|
description: 304 Not Modified Headers made easy.
|
37
37
|
email:
|
38
38
|
- sausman@stackd.com
|