2012-01-05 6 views
0

は、私はこのコードのビットを持っている: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実装です。

答えて

0

em-synchronyは、monkey-patch em-hiredが正しく動作しません。つまり、現在のバージョンのem-synchronyには、そこに表示されているクライアント定義が存在せず、開発HEADにのみ存在します。

関連する問題