class ActiveRecord::ConnectionAdapters::RefreshConnectionManagement
Constants
- DEFAULT_OPTIONS
Public Class Methods
new(app, options = {})
click to toggle source
# File lib/activerecord-refresh_connection/active_record/connection_adapters/refresh_connection_management.rb, line 6 def initialize(app, options = {}) @app = app @options = DEFAULT_OPTIONS.merge(options) @mutex = Mutex.new reset_remain_count end
Public Instance Methods
call(env)
click to toggle source
# File lib/activerecord-refresh_connection/active_record/connection_adapters/refresh_connection_management.rb, line 14 def call(env) testing = env.key?('rack.test') response = @app.call(env) response[2] = ::Rack::BodyProxy.new(response[2]) do # disconnect all connections on the connection pool clear_connections unless testing end response rescue Exception clear_connections unless testing raise end
Private Instance Methods
clear_connections()
click to toggle source
# File lib/activerecord-refresh_connection/active_record/connection_adapters/refresh_connection_management.rb, line 32 def clear_connections if should_clear_all_connections? ActiveRecord::Base.clear_all_connections! else ActiveRecord::Base.clear_active_connections! end end
max_requests()
click to toggle source
# File lib/activerecord-refresh_connection/active_record/connection_adapters/refresh_connection_management.rb, line 55 def max_requests @options[:max_requests] end
reset_remain_count()
click to toggle source
# File lib/activerecord-refresh_connection/active_record/connection_adapters/refresh_connection_management.rb, line 51 def reset_remain_count @remain_count = max_requests end
should_clear_all_connections?()
click to toggle source
# File lib/activerecord-refresh_connection/active_record/connection_adapters/refresh_connection_management.rb, line 40 def should_clear_all_connections? return true if max_requests <= 1 @mutex.synchronize do @remain_count -= 1 (@remain_count <= 0).tap do |clear| reset_remain_count if clear end end end