module AdvancedConnection::ActiveRecordExt::AbstractAdapter::StatementPooling::ExecuteWrapper

Public Instance Methods

__wrap_adapter_exec_method(*methods)
__wrap_adapter_exec_methods(*methods) click to toggle source
# File lib/advanced_connection/active_record_ext/abstract_adapter/statement_pooling.rb, line 30
        def __wrap_adapter_exec_methods(*methods)
          Array(methods).flat_map(&:to_sym).each do |exec_method|
            class_eval(<<-EOS, __FILE__, __LINE__ + 1)
              def #{exec_method}_with_callback(sql, *args, &block)
                if Thread.current[:without_callbacks] || sql =~ /^BEGIN/i || transaction_open? || pool.nil?
                  #{exec_method}_without_callback(sql, *args, &block)
                else
                  run_callbacks(:statement_pooling_connection_checkin) do
                    #{exec_method}_without_callback(sql, *args, &block).tap {
                      reset!
                      pool.release_connection
                    }
                  end
                end
              end
            EOS
            alias_method_chain exec_method, :callback
          end
        end
Also aliased as: __wrap_adapter_exec_method
__wrap_without_callback(*methods)
__wrap_without_callbacks(*methods) click to toggle source
# File lib/advanced_connection/active_record_ext/abstract_adapter/statement_pooling.rb, line 51
        def __wrap_without_callbacks(*methods)
          Array(methods).flat_map(&:to_sym).each do |exec_method|
            target, punctuation = exec_method.to_s.sub(/([?!=])$/, ''), $1
            class_eval(<<-EOS, __FILE__, __LINE__ + 1)
              def #{target}_with_no_callbacks#{punctuation}(*args, &block)
                Thread.current[:without_callbacks] = true
                #{target}_without_no_callbacks#{punctuation}(*args, &block)
              ensure
                Thread.current[:without_callbacks] = nil
              end
            EOS
            alias_method_chain exec_method, :no_callbacks
          end
        end
Also aliased as: __wrap_without_callback