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:
$ bundle
Or install it yourself as:
$ gem install statement_timeout
User.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'
end
We 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.