kenju's blog

About Programming and Mathematics

Implement Timeout in Ruby

Rubyタイムアウトをアプリ側で実装したいときなどは、Timeoutというビルトインのmoduleを使えば簡単に実装できる。

docs.ruby-lang.org

Example

Definition

  DEFAULT_TIMEOUT = 1 * 60 # 1min
  def with_timeout(timeout_sec: DEFAULT_TIMEOUT)
    begin
      Timeout.timeout(timeout_sec) do
        yield
      end
    rescue Timeout::Error => e
      # do whatever if Timeout occurs
    end
  end

Usage

with_timeout do
  # do whatever which should be handled via timeout
end