ruby – Redis gem中的“Invisible”实例方法

Redis类上有一些实例方法.它们在源代码中定义,它们可以工作.但他们没有出现在Redis#方法输出中!

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!

方法定义:getbit,setbit,bitcount,bitop.

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

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

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

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

它们工作是因为缺少方法只是盲目地将它们传递给redis服务器.

点赞