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 に答える