nomo 0.0.5 → 0.0.6

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