sreeix-cache-money 0.2.27 → 0.4.1

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/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