nomo 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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