seifertd-cache-money 0.2.5.2 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
data/lib/cash/accessor.rb CHANGED
@@ -9,13 +9,24 @@ module Cash
9
9
 
10
10
  module ClassMethods
11
11
  def fetch(keys, options = {}, &block)
12
+ #puts "IN FETCH, KEYS: #{keys.inspect}, OPTIONS: #{options.inspect}, BLOCK: #{block.inspect}"
12
13
  case keys
13
14
  when Array
14
15
  keys = keys.collect { |key| cache_key(key) }
16
+ #puts "KEYS ARE ARRAY #{keys.inspect}"
15
17
  hits = repository.get_multi(keys)
18
+ #puts "HITS: #{hits.keys.inspect}"
16
19
  if (missed_keys = keys - hits.keys).any?
20
+ #puts "MISSED KEYS: #{missed_keys.inspect}"
17
21
  missed_values = block.call(missed_keys)
18
- hits.merge!(missed_keys.zip(Array(missed_values)).to_hash)
22
+ #puts "MISSED VALUES: #{missed_values.inspect}"
23
+ # Stuff the newly hit stuff into the cache? Dubious?
24
+ key_to_value = missed_keys.zip(Array(missed_values)).to_hash
25
+ key_to_value.each do |new_key, new_val|
26
+ #puts "CALLING SET #{new_key.inspect} => #{new_val.inspect}"
27
+ repository.set(new_key, new_val, options[:ttl] || 0, options[:raw])
28
+ end
29
+ hits.merge!(key_to_value)
19
30
  end
20
31
  hits
21
32
  else
@@ -24,6 +35,7 @@ module Cash
24
35
  end
25
36
 
26
37
  def get(keys, options = {}, &block)
38
+ #puts "IN GET, KEYS: #{keys.inspect}, OPTIONS: #{options.inspect}"
27
39
  case keys
28
40
  when Array
29
41
  fetch(keys, options, &block)
data/lib/cash/index.rb CHANGED
@@ -64,7 +64,7 @@ module Cash
64
64
  end
65
65
 
66
66
  def window
67
- limit && limit + buffer
67
+ limit && limit + (buffer || 1)
68
68
  end
69
69
  end
70
70
  include Attributes
@@ -12,10 +12,12 @@ module Cash
12
12
  end
13
13
 
14
14
  def perform(find_options = {}, get_options = {})
15
+ #puts "CALLING PEFORM: options1: #{@options1.inspect}, options2: #{@options2.inspect}, find_options: #{find_options.inspect}, get_options: #{get_options.inspect}"
15
16
  if cache_config = cacheable?(@options1, @options2, find_options)
16
17
  cache_keys, index = cache_keys(cache_config[0]), cache_config[1]
17
-
18
+ #puts "CACHE KEYS: #{cache_keys.inspect}"
18
19
  misses, missed_keys, objects = hit_or_miss(cache_keys, index, get_options)
20
+ #puts "MISSES: #{misses.inspect}, MISSED_KEYS: #{missed_keys.inspect}"
19
21
  format_results(cache_keys, choose_deserialized_objects_if_possible(missed_keys, cache_keys, misses, objects))
20
22
  else
21
23
  uncacheable
@@ -49,12 +51,21 @@ module Cash
49
51
 
50
52
  private
51
53
  def cacheable?(*optionss)
54
+ #puts "CALLING CACHEABLE?: optionss: #{optionss.inspect}"
52
55
  optionss.each { |options| return unless safe_options_for_cache?(options) }
56
+ #puts "ALL OPTIONS ARE SAFE FOR CACHE"
53
57
  partial_indices = optionss.collect { |options| attribute_value_pairs_for_conditions(options[:conditions]) }
58
+ #puts "PARTIAL INDICES: #{partial_indices.inspect}"
54
59
  return if partial_indices.include?(nil)
60
+ #puts "NONE OF THE PARTIAL INDICES INCLUDED NIL"
61
+ #puts "SUM??? #{partial_indices.sum.inspect}"
55
62
  attribute_value_pairs = partial_indices.sum.sort { |x, y| x[0] <=> y[0] }
63
+ #puts "ATTRIBUTE_VALUE_PAIRS: #{attribute_value_pairs.inspect}"
56
64
  if index = indexed_on?(attribute_value_pairs.collect { |pair| pair[0] })
65
+ #puts "GOT A MATCHING INDEX: #{index.attributes.inspect}, CHECKING IF QUERY MATCHES"
66
+ #puts "QUERY ORDER: #{order.inspect}, INDEX ORDER: #{index.order.inspect}"
57
67
  if index.matches?(self)
68
+ #puts "QUERY MATCHES INDEX! YES!"
58
69
  [attribute_value_pairs, index]
59
70
  end
60
71
  end
@@ -111,11 +122,16 @@ module Cash
111
122
  end
112
123
 
113
124
  def indexed_on?(attributes)
114
- indices.detect { |index| index == attributes }
125
+ #puts "CHECKING IF AN INDEX MATCHES: #{attributes.inspect}"
126
+ indices.detect do |index|
127
+ #puts " -> INDEX ATTRIBUTES: #{index.attributes.inspect}"
128
+ index == attributes
129
+ end
115
130
  end
116
131
  alias_method :index_for, :indexed_on?
117
132
 
118
133
  def format_results(cache_keys, objects)
134
+ #puts "IN FORMAT RESULTS"
119
135
  return objects if objects.blank?
120
136
 
121
137
  objects = convert_to_array(cache_keys, objects)
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seifertd-cache-money
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5.2
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Kallen
8
+ - Doug Seifert
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2008-11-24 00:00:00 -08:00
13
+ date: 2009-08-25 00:00:00 -07:00
13
14
  default_executable:
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
@@ -18,7 +19,7 @@ dependencies:
18
19
  version_requirement:
19
20
  version_requirements: !ruby/object:Gem::Requirement
20
21
  requirements:
21
- - - "="
22
+ - - ">="
22
23
  - !ruby/object:Gem::Version
23
24
  version: 2.3.2
24
25
  version:
@@ -28,7 +29,7 @@ dependencies:
28
29
  version_requirement:
29
30
  version_requirements: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - "="
32
+ - - ">="
32
33
  - !ruby/object:Gem::Version
33
34
  version: 2.3.2
34
35
  version:
@@ -43,7 +44,7 @@ dependencies:
43
44
  version: 1.5.0
44
45
  version:
45
46
  description: Cache utilities.
46
- email: nick@twitter.com
47
+ email: doug@dseifert.net
47
48
  executables: []
48
49
 
49
50
  extensions: []
@@ -72,7 +73,8 @@ files:
72
73
  - lib/cash/write_through.rb
73
74
  - lib/cache_money.rb
74
75
  has_rdoc: false
75
- homepage: http://github.com/nkallen/cache-money
76
+ homepage: http://github.com/seifertd/cache-money
77
+ licenses:
76
78
  post_install_message:
77
79
  rdoc_options: []
78
80
 
@@ -93,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
95
  requirements: []
94
96
 
95
97
  rubyforge_project:
96
- rubygems_version: 1.2.0
98
+ rubygems_version: 1.3.5
97
99
  signing_key:
98
100
  specification_version: 2
99
101
  summary: Write-through and Read-through Cacheing for ActiveRecord