例外が起きそうな処理を制限回数繰り返す

ファイルへの書き込みやAPIの呼び出しなどで失敗する可能性があって繰り返したいけど、万が一永遠に失敗したとき無限ループになるといけないので指定回数繰り返したいとき。

def write_hello deep=0
  begin
    # 例外が起きそうな処理
    File.write('hoge.txt', 'hello!')
  rescue
    raise if 5 < (deep+2)
    write_hello user_id, (deep+1)
  end
end

# 使用するときはdeepを指定しない
write_hello