Skip to content

Wrap an Active Record transaction or query in a local statement timeout.

License

Notifications You must be signed in to change notification settings

keygen-sh/statement_timeout

Repository files navigation

statement_timeout

CI Gem Version

Use statement_timeout to wrap an Active Record transaction or query in a local statement timeout.

This gem was extracted from Keygen.

Sponsored by:

Keygen

A fair source software licensing and distribution API.

Installation

Add this line to your application's Gemfile:

gem 'statement_timeout'

And then execute:

$ bundle

Or install it yourself as:

$ gem install statement_timeout

Usage

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

Supported databases

We currently support PostgreSQL. We'd love contributions that add MySQL, MariaDB, and SQLite support, but we probably won't add it ourselves.

Supported Rubies

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.

Is it any good?

Yes.

Contributing

If you have an idea, or have discovered a bug, please open an issue or create a pull request.

License

The gem is available as open source under the terms of the MIT License.

About

Wrap an Active Record transaction or query in a local statement timeout.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published