は、私はこのコードのビットを持っている:DefaultDeferrableが返され、両方のケースでこのEventMachine Synchronyのhiredisサンプルが、リクエストの値ではなくDefaultDefferableを返すのはなぜですか?
$ ruby /tmp/reddy.rb
EventMachine::Hiredis::Client
false
false
:あなたは/tmp/reddy.rb
でのファイルシステムに保存した場合、これを行い、
require 'em-synchrony'
require 'em-synchrony/em-hiredis'
EventMachine.synchrony do
redis = EventMachine::Hiredis::Client.connect
puts redis.class.name
redis.set('a', 'foo')
puts redis.get('a') == 'foo' ## should be 'true'
puts redis.get('c').nil? ## should be 'true'
EM.stop
end
。わずかな変更を加えて
puts EM::Synchrony.sync(redis.get('a'))
は、期待通りに戻ります。あなたは私はあなたがEM :: Hiredis :: Clientは、かなり短いことがわかります含めていem-synchrony/em-hiredis
を見ている場合は今、何をすることは、本当に、私は混乱してしまいます:
class Client
def self.connect(host = 'localhost', port = 6379)
conn = new(host, port)
EM::Synchrony.sync conn.connect
conn
end
alias :old_method_missing :method_missing
def method_missing(sym, *args)
EM::Synchrony.sync old_method_missing(sym, *args)
end
end
、EMであることを::同調性.sync はが既に起動されている必要があります。私は何を見落としていますか? em-synchronyのドキュメントが示唆しているように、リストされたコードの一部がなぜ動作しないのですか?私が使用しています
- EM-同期-1.0.0
- eventmachine-0.12.10
- EM-hiredis-0.1.0
- ルビー1.9.3p0(2011 -10-30リビジョン33570)[i686-linux]
私はを認識していますが、 r em-hiredis
はpub/sub実装です。