1
適切なRedis EM宝石(私の場合はem-hiredis)を使用してEventMachine原子炉ループ内でRedisセットを読み、一部のRedisセットにカスケードのメンバーが含まれているかどうかを確認する必要があります。私の目的は、空でない集合の名前を取得している:Ruby EventMachine&functions
require 'eventmachine'
require 'em-hiredis'
def fetch_queue
@redis.scard('todo').callback do |scard_todo|
if scard_todo.zero?
@redis.scard('failed_1').callback do |scard_failed_1|
if scard_failed_1.zero?
@redis.scard('failed_2').callback do |scard_failed_2|
if scard_failed_2.zero?
@redis.scard('failed_3').callback do |scard_failed_3|
if scard_failed_3.zero?
EM.stop
else
queue = 'failed_3'
end
end
else
queue = 'failed_2'
end
end
else
queue = 'failed_1'
end
end
else
queue = 'todo'
end
end
end
EM.run do
@redis = EM::Hiredis.connect "redis://#{HOST}:#{PORT}"
# How to get the value of fetch_queue?
foo = fetch_queue
puts foo
end
を私の質問は:私は原子炉のループでそれを使用する「fetch_queue」で「キュー」の値を返すためにEMを伝えることができる方法? fetch_queueの単純な "return queue = 'todo'"、 "return queue = 'failed_1'"などは、 "予期しない戻り値(LocalJumpError)"というエラーメッセージをもたらします。
うわー、何aswer!このようなクールで詳細なサンプルに感謝しています。 – ctp