representable-cache 0.0.2 → 0.0.3

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