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.
Files changed (3) hide show
  1. data/lib/nomo/model.rb +58 -0
  2. data/lib/nomo/version.rb +1 -1
  3. 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
@@ -1,3 +1,3 @@
1
1
  module Nomo
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
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.1
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: &70318249169660 !ruby/object:Gem::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: *70318249169660
24
+ version_requirements: *70364139009340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redis-namespace
27
- requirement: &70318249168900 !ruby/object:Gem::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: *70318249168900
35
+ version_requirements: *70364139008880
36
36
  description: 304 Not Modified Headers made easy.
37
37
  email:
38
38
  - sausman@stackd.com