"no block given" errors with cache_money

Posted by emh on Stack Overflow See other posts from Stack Overflow or by emh
Published on 2010-05-29T17:01:24Z Indexed on 2010/05/29 17:12 UTC
Read the original article Hit count: 485

Filed under:
|
|
|

i've inherited a site that in production is generating dozens of "no block given" exceptions every 5 minutes.

the top of the stack trace is:

   vendor/gems/nkallen-cache-money-0.2.5/lib/cash/accessor.rb:42:in `add'
   vendor/gems/nkallen-cache-money-0.2.5/lib/cash/accessor.rb:33:in `get'
   vendor/gems/nkallen-cache-money-0.2.5/lib/cash/accessor.rb:22:in `call'
   vendor/gems/nkallen-cache-money-0.2.5/lib/cash/accessor.rb:22:in `fetch'
   vendor/gems/nkallen-cache-money-0.2.5/lib/cash/accessor.rb:31:in `get'

so it appears that the problem is in the cache money plugin.

has anyone experienced something similar?

i've cut and pasted the relevant code below -- anyone more familiar with blocks able to discern any obvious problems?

 11       def fetch(keys, options = {}, &block)
 12         case keys
 13         when Array
 14           keys = keys.collect { |key| cache_key(key) }
 15           hits = repository.get_multi(keys)
 16           if (missed_keys = keys - hits.keys).any?
 17             missed_values = block.call(missed_keys)
 18             hits.merge!(missed_keys.zip(Array(missed_values)).to_hash)
 19           end
 20           hits
 21         else
 22           repository.get(cache_key(keys), options[:raw]) || (block ? block.call : nil)
 23         end
 24       end
 25 
 26       def get(keys, options = {}, &block)
 27         case keys
 28         when Array
 29           fetch(keys, options, &block)
 30         else
 31           fetch(keys, options) do
 32             if block_given?
 33               add(keys, result = yield(keys), options)
 34               result
 35             end
 36           end
 37         end
 38       end
 39 
 40       def add(key, value, options = {})
 41         if repository.add(cache_key(key), value, options[:ttl] || 0, options[:raw]) == "NOT_STORED\r\n"
 42           yield
 43         end
 44       end

© Stack Overflow or respective owner

Related posts about ruby

Related posts about exception