Refresh ActiveRecord connection on each rack request
Add the following to your Gemfile:
gem 'activerecord-refresh_connection'And then execute:
$ bundle This gem provides a rack middleware ActiveRecord::ConnectionAdapters::RefreshConnectionManagement which disconnects all connections in each rack request, which results in refreshing all connections in each rack request.
NOTE: activerecord-refresh_connection does not work with puma, and webrick server in rails 5.
# config/application.rb class Application < Rails::Application config.middleware.insert_before ActionDispatch::Executor, ActiveRecord::ConnectionAdapters::RefreshConnectionManagement ## If you would like to clear connections after 5 requests: # config.middleware.insert_before ActionDispatch::Executor, # ActiveRecord::ConnectionAdapters::RefreshConnectionManagement, max_requests: 5 endMiddleware check.
bundle exec rake middlewareUse unicorn server to run your application.
NOTE: activerecord-refresh_connection does not work with puma server in rails 4.
Swap the default rails ConnectionManagement.
# config/application.rb class Application < Rails::Application config.middleware.swap ActiveRecord::ConnectionAdapters::ConnectionManagement, "ActiveRecord::ConnectionAdapters::RefreshConnectionManagement" ## If you would like to clear connections after 5 requests: # config.middleware.insert_before ActiveRecord::ConnectionAdapters::ConnectionManagement, # "ActiveRecord::ConnectionAdapters::RefreshConnectionManagement", max_requests: 5 # config.middleware.delete ActiveRecord::ConnectionAdapters::ConnectionManagement endMiddleware check.
bundle exec rake middleware# config.ru require 'activerecord-refresh_connection' use ActiveRecord::ConnectionAdapters::RefreshConnectionManagement ## If you would like to clear connections after 5 requests: # use ActiveRecord::ConnectionAdapters::RefreshConnectionManagement, max_requests: 5 run AppSee CHANGELOG.md for details.
Run example
cd example/xxxx bundle bundle exec foreman start Watch show processlist in mysql console to see connections are killed on each access.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
Copyright (c) 2014 Naotoshi Seo. See LICENSE.txt for details.

