ブロックを 60 秒間実行したいと思います。これまでに思いついたことは、思い通りにブロックから抜け出せません。
@start_time = Time.now
stream_some_data do |x|
# .. do something ...
break if Time.now == @start_time + 60
end
ブロックを 60 秒間実行したいと思います。これまでに思いついたことは、思い通りにブロックから抜け出せません。
@start_time = Time.now
stream_some_data do |x|
# .. do something ...
break if Time.now == @start_time + 60
end
Ruby の stdlib には、このための Timeout モジュールが既にあります。
begin
require "timeout"
Timeout::timeout(60) do
# all of the things...
end
rescue Timeout::Error => e
end
開始からちょうど60 秒後にその行に到達する可能性は低いため、次のことを試してください。
break if Time.now > @start_time + 60