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

ファイルへの書き込みや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