sreeix-cache-money 0.2.27 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/cache_money.rb CHANGED
@@ -24,7 +24,7 @@ require 'cash/util/marshal'
24
24
 
25
25
  class ActiveRecord::Base
26
26
  def self.is_cached(options = {})
27
- if (options == false || options[:repository].nil?)
27
+ if options == false
28
28
  include NoCash
29
29
  else
30
30
  options.assert_valid_keys(:ttl, :repository, :version)
@@ -1,263 +1,6 @@
1
- # require 'memcache'
2
- # require 'memcached'
1
+ require 'dalli'
2
+ # require 'dalli/memcache-client'
3
3
 
4
- #typically MemCache/Memcached can be used via the following in rails/init.rb:
5
- #$memcache = MemCache.new(memcache_config[:servers].gsub(' ', '').split(','), memcache_config)
6
- #$memcache = Memcached::Rails.new(memcache_config[:servers].gsub(' ', '').split(','), memcache_config)
7
4
 
8
- #this wrapper lets both work.
9
-
10
- ########## they have Memcached installed (do need the wrapper)
11
- if defined? Memcached
12
- Rails.logger.info("cache-money: Memcached installed") if defined? Rails
13
-
14
- class Memcached
15
- alias :get_multi :get #:nodoc:
16
- end
17
-
18
- class MemcachedWrapper < ::Memcached
19
- DEFAULTS = { :servers => '127.0.0.1:11211' }
20
-
21
- attr_reader :logger, :default_ttl
22
-
23
- # See Memcached#new for details.
24
- def initialize(*args)
25
- opts = DEFAULTS.merge(args.last.is_a?(Hash) ? args.pop : {})
26
-
27
- if opts.respond_to?(:symbolize_keys!)
28
- opts.symbolize_keys!
29
- else
30
- opts = symbolize_keys(opts)
31
- end
32
-
33
- servers = Array(
34
- args.any? ? args.unshift : opts.delete(:servers)
35
- ).flatten.compact
36
-
37
- opts[:prefix_key] ||= "#{opts[:namespace]}:"
38
-
39
- @logger = opts[:logger]
40
- @debug = opts[:debug]
41
-
42
- super(servers, opts)
43
- end
44
-
45
- def symbolize_keys(opts)
46
- # Destructively convert all keys to symbols.
47
- if opts.kind_of?(Hash) && !opts.kind_of?(HashWithIndifferentAccess)
48
- opts.keys.each do |key|
49
- unless key.is_a?(Symbol)
50
- opts[key.to_sym] = opts[key]
51
- opts.delete(key)
52
- end
53
- end
54
- end
55
- opts
56
- end
57
-
58
- def namespace
59
- options[:prefix_key]
60
- end
61
-
62
- # Wraps Memcached::Rails#add to return a text string - for cache money
63
- def add(key, value, ttl=@default_ttl, raw=false)
64
- logger.debug("Memcached add: #{key.inspect}") if logger && @debug
65
- super(key, value, ttl, !raw)
66
- logger.debug("Memcached hit: #{key.inspect}") if logger && @debug
67
- stored
68
- rescue Memcached::NotStored
69
- logger.debug("Memcached miss: #{key.inspect}") if logger && @debug
70
- not_stored
71
- rescue Memcached::Error
72
- log_error($!) if logger
73
- not_stored
74
- end
75
-
76
- def replace(key, value, ttl = @default_ttl, raw = false)
77
- logger.debug("Memcached replace: #{key.inspect}") if logger && @debug
78
- super(key, value, ttl, !raw)
79
- logger.debug("Memcached hit: #{key.inspect}") if logger && @debug
80
- stored
81
- rescue Memcached::NotStored
82
- logger.debug("Memcached miss: #{key.inspect}") if logger && @debug
83
- not_stored
84
- rescue Memcached::Error
85
- log_error($!) if logger
86
- not_stored
87
- end
88
-
89
- # Wraps Memcached#get so that it doesn't raise. This has the side-effect of preventing you from
90
- # storing <tt>nil</tt> values.
91
- def get(key, raw=false)
92
- logger.debug("Memcached get: #{key.inspect}") if logger && @debug
93
- value = super(key, !raw)
94
- logger.debug("Memcached hit: #{key.inspect}") if logger && @debug
95
- value
96
- rescue Memcached::NotFound
97
- logger.debug("Memcached miss: #{key.inspect}") if logger && @debug
98
- nil
99
- rescue TypeError
100
- log_error($!) if logger
101
- delete(key)
102
- logger.debug("Memcached deleted: #{key.inspect}") if logger && @debug
103
- nil
104
- rescue Memcached::Error
105
- log_error($!) if logger
106
- nil
107
- end
108
-
109
- def fetch(key, expiry = 0, raw = false)
110
- value = get(key, !raw)
111
-
112
- if value.nil? && block_given?
113
- value = yield
114
- add(key, value, expiry, !raw)
115
- end
116
-
117
- value
118
- end
119
-
120
- # Wraps Memcached#cas so that it doesn't raise. Doesn't set anything if no value is present.
121
- def cas(key, ttl=@default_ttl, raw=false, &block)
122
- logger.debug("Memcached cas: #{key.inspect}") if logger && @debug
123
- super(key, ttl, !raw, &block)
124
- logger.debug("Memcached hit: #{key.inspect}") if logger && @debug
125
- stored
126
- rescue Memcached::NotFound
127
- logger.debug("Memcached miss: #{key.inspect}") if logger && @debug
128
- rescue TypeError
129
- log_error($!) if logger
130
- delete(key)
131
- logger.debug("Memcached deleted: #{key.inspect}") if logger && @debug
132
- rescue Memcached::Error
133
- if $!.is_a?(Memcached::ClientError)
134
- raise $!
135
- end
136
- log_error($!) if logger
137
- end
138
-
139
- def get_multi(*keys)
140
- keys.flatten!
141
- logger.debug("Memcached get_multi: #{keys.inspect}") if logger && @debug
142
- values = super(keys, true)
143
- logger.debug("Memcached hit: #{keys.inspect}") if logger && @debug
144
- values
145
- rescue Memcached::NotFound
146
- logger.debug("Memcached miss: #{keys.inspect}") if logger && @debug
147
- {}
148
- rescue TypeError
149
- log_error($!) if logger
150
- keys.each { |key| delete(key) }
151
- logger.debug("Memcached deleted: #{keys.inspect}") if logger && @debug
152
- {}
153
- rescue Memcached::Error
154
- log_error($!) if logger
155
- {}
156
- end
157
-
158
- def set(key, value, ttl=@default_ttl, raw=false)
159
- logger.debug("Memcached set: #{key.inspect}") if logger && @debug
160
- super(key, value, ttl, !raw)
161
- logger.debug("Memcached hit: #{key.inspect}") if logger && @debug
162
- stored
163
- rescue Memcached::Error
164
- log_error($!) if logger
165
- not_stored
166
- end
167
-
168
- def append(key, value)
169
- logger.debug("Memcached append: #{key.inspect}") if logger && @debug
170
- super(key, value)
171
- logger.debug("Memcached hit: #{key.inspect}") if logger && @debug
172
- stored
173
- rescue Memcached::NotStored
174
- logger.debug("Memcached miss: #{key.inspect}") if logger && @debug
175
- not_stored
176
- rescue Memcached::Error
177
- log_error($!) if logger
178
- end
179
-
180
- def prepend(key, value)
181
- logger.debug("Memcached prepend: #{key.inspect}") if logger && @debug
182
- super(key, value)
183
- logger.debug("Memcached hit: #{key.inspect}") if logger && @debug
184
- stored
185
- rescue Memcached::NotStored
186
- logger.debug("Memcached miss: #{key.inspect}") if logger && @debug
187
- not_stored
188
- rescue Memcached::Error
189
- log_error($!) if logger
190
- end
191
-
192
- def delete(key)
193
- logger.debug("Memcached delete: #{key.inspect}") if logger && @debug
194
- super(key)
195
- logger.debug("Memcached hit: #{key.inspect}") if logger && @debug
196
- deleted
197
- rescue Memcached::NotFound
198
- logger.debug("Memcached miss: #{key.inspect}") if logger && @debug
199
- not_found
200
- rescue Memcached::Error
201
- log_error($!) if logger
202
- end
203
-
204
- def incr(*args)
205
- super
206
- rescue Memcached::NotFound
207
- rescue Memcached::Error
208
- log_error($!) if logger
209
- end
210
-
211
- def decr(*args)
212
- super
213
- rescue Memcached::NotFound
214
- rescue Memcached::Error
215
- log_error($!) if logger
216
- end
217
-
218
- def get_server_for_key(key, options = {})
219
- server_by_key(key)
220
- end
221
-
222
- alias :reset :quit
223
- alias :close :quit #nodoc
224
- alias :flush_all :flush
225
- alias :compare_and_swap :cas
226
- alias :"[]" :get
227
- alias :"[]=" :set
228
-
229
- private
230
-
231
- def stored
232
- "STORED\r\n"
233
- end
234
-
235
- def deleted
236
- "DELETED\r\n"
237
- end
238
-
239
- def not_stored
240
- "NOT_STORED\r\n"
241
- end
242
-
243
- def not_found
244
- "NOT_FOUND\r\n"
245
- end
246
-
247
- def log_error(err)
248
- #logger.error("#{err}: \n\t#{err.backtrace.join("\n\t")}") if logger
249
- logger.error("Memcached ERROR, #{err.class}: #{err}") if logger
250
- end
251
-
252
- end
253
- ####### they have MemCache installed (don't need the wrapper)
254
- elsif defined? MemCache
255
-
256
- Rails.logger.info("cache-money: MemCache installed") if defined? Rails
257
- #TODO add logging?
258
- class MemcachedWrapper < ::MemCache
259
- end
260
-
261
- else
262
- Rails.logger.warn 'unable to determine memcache implementation' if defined? Rails
263
- end #include the wraper
5
+ class MemcachedWrapper < Dalli::Client
6
+ end
data/rails/init.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'dalli'
2
+ require 'dalli/memcache-client'
3
+
1
4
  yml = YAML.load(IO.read(File.join(RAILS_ROOT, "config", "memcached.yml")))
2
5
  memcache_config = yml[RAILS_ENV]
3
6
 
metadata CHANGED
@@ -1,10 +1,10 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sreeix-cache-money
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.1
4
5
  prerelease:
5
- version: 0.2.27
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Nick Kallen
9
9
  - Ashley Martens
10
10
  - Scott Mace
@@ -12,44 +12,40 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
-
16
- date: 2011-05-27 00:00:00 +05:30
17
- default_executable:
18
- dependencies:
19
- - !ruby/object:Gem::Dependency
15
+ date: 2012-03-02 00:00:00.000000000Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
20
18
  name: activerecord
21
- requirement: &id001 !ruby/object:Gem::Requirement
19
+ requirement: &70109457090920 !ruby/object:Gem::Requirement
22
20
  none: false
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
21
+ requirements:
22
+ - - ! '>='
23
+ - !ruby/object:Gem::Version
26
24
  version: 2.2.0
27
25
  type: :runtime
28
26
  prerelease: false
29
- version_requirements: *id001
30
- - !ruby/object:Gem::Dependency
27
+ version_requirements: *70109457090920
28
+ - !ruby/object:Gem::Dependency
31
29
  name: activesupport
32
- requirement: &id002 !ruby/object:Gem::Requirement
30
+ requirement: &70109457090420 !ruby/object:Gem::Requirement
33
31
  none: false
34
- requirements:
35
- - - ">="
36
- - !ruby/object:Gem::Version
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
37
35
  version: 2.2.0
38
36
  type: :runtime
39
37
  prerelease: false
40
- version_requirements: *id002
38
+ version_requirements: *70109457090420
41
39
  description: Write-through and Read-through Cacheing for ActiveRecord
42
40
  email: teamplatform@ngmoco.com
43
41
  executables: []
44
-
45
42
  extensions: []
46
-
47
- extra_rdoc_files:
43
+ extra_rdoc_files:
48
44
  - LICENSE
49
45
  - README
50
46
  - README.markdown
51
47
  - TODO
52
- files:
48
+ files:
53
49
  - README
54
50
  - TODO
55
51
  - UNSUPPORTED_FEATURES
@@ -98,38 +94,35 @@ files:
98
94
  - spec/cash/write_through_spec.rb
99
95
  - spec/memcached_wrapper_test.rb
100
96
  - spec/spec_helper.rb
101
- has_rdoc: true
102
97
  homepage: http://github.com/sreeix/cache-money
103
98
  licenses: []
104
-
105
99
  post_install_message:
106
- rdoc_options:
100
+ rdoc_options:
107
101
  - --charset=UTF-8
108
- require_paths:
102
+ require_paths:
109
103
  - lib
110
- required_ruby_version: !ruby/object:Gem::Requirement
104
+ required_ruby_version: !ruby/object:Gem::Requirement
111
105
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: -1254412095328383851
116
- segments:
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ segments:
117
111
  - 0
118
- version: "0"
119
- required_rubygems_version: !ruby/object:Gem::Requirement
112
+ hash: 4133822557448889217
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
114
  none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: "0"
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
125
119
  requirements: []
126
-
127
120
  rubyforge_project:
128
- rubygems_version: 1.6.2
121
+ rubygems_version: 1.8.15
129
122
  signing_key:
130
123
  specification_version: 3
131
124
  summary: Write-through and Read-through Cacheing for ActiveRecord
132
- test_files:
125
+ test_files:
133
126
  - config/environment.rb
134
127
  - config/memcached.yml
135
128
  - db/schema.rb