nomo 0.0.5 → 0.0.6

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.
@@ -4,8 +4,12 @@ module Nomo
4
4
 
5
5
  def fresh_when(record_or_options, additional_options = {})
6
6
  if record_or_options.is_a? Nomo::Page
7
- record_or_options = { etag: record_or_options.etag,
8
- last_modified: record_or_options.last_modified }
7
+ nomo_page = record_or_options
8
+
9
+ record_or_options = { etag: nomo_page.etag,
10
+ last_modified: nomo_page.last_modified }
11
+
12
+ response.headers['X-Nomo-Key'] = nomo_page.key
9
13
  end
10
14
 
11
15
  super
@@ -3,38 +3,42 @@ module Nomo
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  module ClassMethods
6
- def has_page(name, options = {})
6
+ def has_page(name)
7
7
  page_method = :"#{name}_page"
8
8
  modify_page_method = :"modify_#{name}_page!"
9
9
 
10
10
  define_method page_method do
11
11
  @nomo_pages ||= {}
12
- @nomo_pages[name] ||= Nomo::Page.new(self, name, options)
12
+ @nomo_pages[name] ||= Nomo::Page.new(self, name)
13
13
  end
14
14
 
15
15
  define_method modify_page_method do
16
16
  page = send(page_method)
17
17
  page.modify!
18
18
  end
19
+
20
+ after_save modify_page_method
21
+ after_touch modify_page_method
22
+ after_destroy modify_page_method
19
23
  end
20
24
 
21
25
  def modifies_page(association, name)
22
- modify_page_method = :"modify_#{association}_#{name}_page!"
26
+ modify_association_page_method = :"modify_#{association}_#{name}_page!"
23
27
 
24
- define_method modify_page_method do
28
+ define_method modify_association_page_method do
25
29
  record = send(association)
26
30
  record.send(:"modify_#{name}_page!")
27
31
  end
28
32
 
29
- after_save modify_page_method
30
- after_touch modify_page_method
31
- after_destroy modify_page_method
33
+ after_save modify_association_page_method
34
+ after_touch modify_association_page_method
35
+ after_destroy modify_association_page_method
32
36
  end
33
37
 
34
38
  def modifies_pages(association, name)
35
- modify_pages_method = :"modify_#{association}_#{name}_pages!"
39
+ modify_association_pages_method = :"modify_#{association}_#{name}_pages!"
36
40
 
37
- define_method modify_pages_method do
41
+ define_method modify_association_pages_method do
38
42
  Nomo.redis.multi do
39
43
  for record in send(association)
40
44
  record.send(:"modify_#{name}_page!")
@@ -42,9 +46,9 @@ module Nomo
42
46
  end
43
47
  end
44
48
 
45
- after_save modify_pages_method
46
- after_touch modify_pages_method
47
- after_destroy modify_pages_method
49
+ after_save modify_association_pages_method
50
+ after_touch modify_association_pages_method
51
+ after_destroy modify_association_pages_method
48
52
  end
49
53
  end
50
54
  end
@@ -2,41 +2,33 @@ module Nomo
2
2
  class Page
3
3
  attr_reader :record
4
4
  attr_reader :name
5
- attr_reader :options
6
5
 
7
- def initialize(record, name, options)
8
- @record = record
9
- @name = name
10
- @options = options
6
+ def initialize(record, name)
7
+ @record = record
8
+ @name = name
11
9
  end
12
10
 
13
11
  def etag
14
- parts = [key, last_modified]
15
- Digest::MD5.hexdigest(parts.join('/'))
12
+ @etag ||= Digest::MD5.hexdigest([key, last_modified].join('/'))
16
13
  end
17
14
 
18
15
  def last_modified
19
16
  @last_modified ||= Time.parse(redis.get(key) || record.updated_at.to_s).utc
20
- @last_modified < record.updated_at ? record.updated_at.utc : @last_modified
21
17
  end
22
18
 
23
19
  def modify!
20
+ @etag = nil
24
21
  @last_modified = Time.now.utc
25
- redis.set(key, @last_modified.to_s)
22
+
23
+ redis.set(key, @last_modified)
26
24
  end
27
25
 
28
26
  def cache_key
29
- parts = [record.cache_key, name, etag]
30
- parts.join('/')
27
+ [record.cache_key, name, etag].join('/')
31
28
  end
32
29
 
33
30
  def key
34
- unless @key
35
- parts = [record.class.to_s.tableize, record.id, name]
36
- @key = parts.join('/')
37
- end
38
-
39
- @key
31
+ @key ||= [record.class.to_s.tableize, record.id, name].join('/')
40
32
  end
41
33
 
42
34
  private
@@ -1,3 +1,3 @@
1
1
  module Nomo
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
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.5
4
+ version: 0.0.6
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: 2012-06-20 00:00:00.000000000 Z
12
+ date: 2012-06-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
16
- requirement: &70213358089320 !ruby/object:Gem::Requirement
16
+ requirement: &70098459256180 !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: *70213358089320
24
+ version_requirements: *70098459256180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redis-namespace
27
- requirement: &70213358087980 !ruby/object:Gem::Requirement
27
+ requirement: &70098459255260 !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: *70213358087980
35
+ version_requirements: *70098459255260
36
36
  description: 304 Not Modified Headers made easy.
37
37
  email:
38
38
  - sausman@stackd.com
@@ -53,6 +53,7 @@ files:
53
53
  - lib/nomo/rails/engine.rb
54
54
  - lib/nomo/version.rb
55
55
  - nomo.gemspec
56
+ - vendor/assets/javascripts/nomo.js.coffee
56
57
  homepage: https://github.com/stackd/nomo
57
58
  licenses: []
58
59
  post_install_message: