2010-02-03 20 views
13

Tôi nhận được một ngoại lệ khi sử dụng đá quý Memcached Evan Weaver (như memcached :: Rails.new) -> (http://github.com/fauna/memcached) và get_multi gọi()rubygem memcached + lỗi lập luận Rlibmemcached với memcache_mget()

ArgumentError: wrong # of arguments(2 for 4) 
from /usr/local/lib/ruby/gems/1.8/gems/memcache-auth-1.0.1/lib/memcached/memcached.rb:384:in `memcached_mget' 
from /usr/local/lib/ruby/gems/1.8/gems/memcache-auth-1.0.1/lib/memcached/memcached.rb:384:in `get_orig' 
from /usr/local/lib/ruby/gems/1.8/gems/memcache-auth-1.0.1/lib/memcached/rails.rb:40:in `get_multi' 

tôi nhận thấy rằng memcached_get.h định nghĩa memcached_mget như:

memcached_return memcached_mget(memcached_st *ptr, 
          const char * const *keys, 
          const size_t *key_length, 
          size_t number_of_keys); 

vì vậy, nó sẽ có vẻ key_length và number_of_keys bị thiếu (C của tôi là một chút gỉ, nhưng tôi giả sử đối số những người sẽ được yêu cầu).

Tuy nhiên, có vẻ như mã ruby ​​liên quan (trong rails.rb) chỉ được đi qua 2 args:

def get_multi(keys, raw=false) 
    get_orig(keys, !raw) 
end 

UPDATE: Hóa ra đó là một lỗi trong các đá quý ruby, mà hiện đã được vá .

+13

Vui lòng xem xét thêm câu trả lời của bạn vào phần "câu trả lời" và đánh dấu câu hỏi này là đã được giải quyết. – danlefree

Trả lời

1

Có thể là lỗi trong đá quý Ruby không? ;-)