4

类上有一些实例方法Redis。它们在源代码中定义并且可以工作。但是它们没有出现在Redis#methods输出中!

require 'redis'

redis = Redis.new # => #<Redis client v3.0.2 for redis://127.0.0.1:6379/0>
redis.info['redis_version'] # => "2.6.4"

k = 'foo'
redis.setbit k, 1, 1
redis.setbit k, 3, 1
redis.setbit k, 11, 1

redis.bitcount k # => 3

redis.methods.grep(/bit/) # => [:setbit, :getbit]
# no bitcount in the methods!

方法定义:getbitsetbitbitcountbitop

据我所知,bitcount/bitop 应该出现在methods. 但他们没有。有什么想法吗?

我需要将它们列在方法中,以便另一个 gem 工作(它定义了它从中获取的 redis 命令的代理方法Redis#methods)。

4

1 回答 1

2

gem 的发布版本没有明确定义这些方法,您可以通过检查已安装的源或redis.method :bitcount

https://github.com/redis/redis-rb/blob/v3.0.2/lib/redis.rb

它们之所以起作用,是因为缺少的方法只是将它们盲目地传递给 redis 服务器。

于 2013-01-11T07:37:58.667 回答