Use statement_timeout to wrap an Active Record transaction or query in a
local statement timeout.
This gem was extracted from Keygen.
Sponsored by:
A fair source software licensing and distribution API.
Add this line to your application's Gemfile:
gem 'statement_timeout'And then execute:
$ bundleOr install it yourself as:
$ gem install statement_timeoutUser.statement_timeout 42.minutes do
some_expensive_operation
end
User.posts.statement_timeout 10.seconds do
some_cheap_operation
end
Post.statement_timeout 10.minutes do |conn|
conn.transaction { archive_old_posts }
end
Tag.statement_timeout 6.hours do |conn|
conn.execute 'VACUUM ANALYZE tags'
endWe currently support PostgreSQL. We'd love contributions that add MySQL, MariaDB, and SQLite support, but we probably won't add it ourselves.
statement_timeout supports Ruby 3.1 and above. We encourage you to upgrade
if you're on an older version. Ruby 3 provides a lot of great features, like
better pattern matching and a new shorthand hash syntax.
Yes.
If you have an idea, or have discovered a bug, please open an issue or create a pull request.
The gem is available as open source under the terms of the MIT License.