適切なRedisEMgem(私の場合は「em-hiredis」)を使用してEventMachineリアクターループ内のRedisセットを読み取っていて、一部のRedisセットにカスケードのメンバーが含まれているかどうかを確認する必要があります。私の目的は、空ではないセットの名前を取得することです。
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
私の質問は、EMに「fetch_queue」の「queue」の値を返してreactorループで使用するように指示するにはどうすればよいですか?fetch_queueの単純な「returnqueue='todo'」、「return queue ='failed_1'」などは、「unexpected return(LocalJumpError)」エラーメッセージになります。