Module: AdvancedConnection::ActiveRecordExt::AbstractAdapter::StatementPooling::ExecuteWrapper
- Defined in:
- lib/advanced_connection/active_record_ext/abstract_adapter/statement_pooling.rb
Instance Method Summary collapse
- #__wrap_adapter_exec_methods(*methods) ⇒ Object (also: #__wrap_adapter_exec_method)
- #__wrap_without_callbacks(*methods) ⇒ Object (also: #__wrap_without_callback)
Instance Method Details
#__wrap_adapter_exec_methods(*methods) ⇒ Object Also known as: __wrap_adapter_exec_method
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# 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(" def \#{exec_method}_with_callback(sql, *args, &block)\n if Thread.current[:without_callbacks] || sql =~ /^BEGIN/i || transaction_open? || pool.nil?\n \#{exec_method}_without_callback(sql, *args, &block)\n else\n run_callbacks(:statement_pooling_connection_checkin) do\n \#{exec_method}_without_callback(sql, *args, &block).tap {\n reset!\n pool.release_connection\n }\n end\n end\n end\n EOS\n alias_method_chain exec_method, :callback\n end\nend\n", __FILE__, __LINE__ + 1) |
#__wrap_without_callbacks(*methods) ⇒ Object Also known as: __wrap_without_callback
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# 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(" def \#{target}_with_no_callbacks\#{punctuation}(*args, &block)\n Thread.current[:without_callbacks] = true\n \#{target}_without_no_callbacks\#{punctuation}(*args, &block)\n ensure\n Thread.current[:without_callbacks] = nil\n end\n EOS\n alias_method_chain exec_method, :no_callbacks\n end\nend\n", __FILE__, __LINE__ + 1) |