module AdvancedConnection::ActiveRecordExt::AbstractAdapter::StatementPooling::ExecuteWrapper
Public Instance 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_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