representable-cache 0.0.2 → 0.0.3

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/CHANGES.md ADDED
@@ -0,0 +1,8 @@
1
+ * 0.0.1
2
+ first commit
3
+
4
+ * 0.0.2
5
+ support enable disable
6
+
7
+ * 0.0.3
8
+ add logging
@@ -1,5 +1,5 @@
1
1
  module Representable
2
2
  module Cache
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -1,11 +1,13 @@
1
1
  require "representable/cache/version"
2
2
  require 'representable/binding'
3
+ require 'benchmark'
3
4
 
4
5
  module Representable::Cache
5
6
  def self.reset
6
7
  @default_cache_key = nil
7
8
  @engine = nil
8
9
  @enable = nil
10
+ @logger = nil
9
11
  end
10
12
  def self.cache_engine=(engine)
11
13
  raise "engine doesn't response to get" if !engine.respond_to?(:get)
@@ -34,6 +36,14 @@ module Representable::Cache
34
36
  @engine
35
37
  end
36
38
 
39
+ def self.logger=(logger)
40
+ @logger = logger
41
+ end
42
+
43
+ def self.logger
44
+ @logger ||= Logger.new(STDOUT)
45
+ end
46
+
37
47
  # include presenter in model
38
48
  def self.included(base)
39
49
  base.send(:include, InstanceMethods)
@@ -83,11 +93,19 @@ module Representable::Cache
83
93
  module InstanceMethods
84
94
  def to_hash(options={}, binding_builder=Representable::Hash::PropertyBinding)
85
95
  return super(options, binding_builder) if !Representable::Cache.enable
86
- if hash = Representable::Cache.cache.get(self.representable_cache_key)
96
+
97
+ key = self.representable_cache_key
98
+
99
+ if hash = Representable::Cache.cache.get(key)
100
+ Representable::Cache.logger.debug "[Representable::Cache] cache hit: #{key}"
87
101
  return hash
88
102
  end
89
- hash = super(options, binding_builder)
90
- Representable::Cache.cache.set(self.representable_cache_key, hash)
103
+
104
+ time = Benchmark.realtime do
105
+ hash = super(options, binding_builder)
106
+ end
107
+ Representable::Cache.cache.set(key, hash)
108
+ Representable::Cache.logger.debug "[Representable::Cache] write cache: #{key} cost: #{time.to_f}"
91
109
  hash
92
110
  end
93
111
 
@@ -101,8 +119,8 @@ module Representable::Cache
101
119
  self.representable_cache_options[:cache_name] ||= self.class.name
102
120
 
103
121
  keys = [
104
- self.representable_cache_options[:cache_version],
105
- self.representable_cache_options[:cache_name]
122
+ self.representable_cache_options[:cache_name],
123
+ self.representable_cache_options[:cache_version]
106
124
  ]
107
125
  raise "cache_key or default_cache_key is required" if self.representable_cache_options[:cache_key].nil?
108
126
  if self.representable_cache_options[:cache_key].kind_of? Array
@@ -110,7 +128,7 @@ module Representable::Cache
110
128
  self.send(k).to_s.gsub(/\s+/,'')
111
129
  end
112
130
  else
113
- self.send(self.representable_cache_options[:cache_key]).to_s.gsub(/\s+/,'')
131
+ keys << self.send(self.representable_cache_options[:cache_key]).to_s.gsub(/\s+/,'')
114
132
  end
115
133
  keys.compact.join("-")
116
134
  end
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'dalli'
3
3
  require 'representable/cache'
4
+ require 'logger'
4
5
 
5
6
  describe "configuration" do
6
7
  context "cache engine" do
@@ -40,4 +41,10 @@ describe "configuration" do
40
41
  Representable::Cache.enable.should be_true
41
42
  end
42
43
  end
44
+ context "logger" do
45
+ it "should support loger" do
46
+ Representable::Cache.logger = Logger.new(STDOUT)
47
+ Representable::Cache.logger.should be_kind_of Logger
48
+ end
49
+ end
43
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: representable-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -118,6 +118,7 @@ files:
118
118
  - .rspec
119
119
  - .ruby-gemset
120
120
  - .ruby-version
121
+ - CHANGES.md
121
122
  - Gemfile
122
123
  - LICENSE.txt
123
124
  - README.md
@@ -143,7 +144,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
144
  version: '0'
144
145
  segments:
145
146
  - 0
146
- hash: 624065444298100772
147
+ hash: 3107214138377050782
147
148
  required_rubygems_version: !ruby/object:Gem::Requirement
148
149
  none: false
149
150
  requirements:
@@ -152,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
153
  version: '0'
153
154
  segments:
154
155
  - 0
155
- hash: 624065444298100772
156
+ hash: 3107214138377050782
156
157
  requirements: []
157
158
  rubyforge_project:
158
159
  rubygems_version: 1.8.23