Module: ActiveMerchant::NetworkConnectionRetries
- Included in:
- Connection
- Defined in:
- lib/active_utils/common/network_connection_retries.rb
Constant Summary collapse
- DEFAULT_RETRIES =
3
- DEFAULT_CONNECTION_ERRORS =
{ EOFError => "The remote server dropped the connection", Errno::ECONNRESET => "The remote server reset the connection", Timeout::Error => "The connection to the remote server timed out", Errno::ETIMEDOUT => "The connection to the remote server timed out", SocketError => "The connection to the remote server could not be established", OpenSSL::SSL::SSLError => "The SSL connection to the remote server could not be established" }
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(base) ⇒ Object
13 14 15 |
# File 'lib/active_utils/common/network_connection_retries.rb', line 13 def self.included(base) base.send(:attr_accessor, :retry_safe) end |
Instance Method Details
#retry_exceptions(options = {}) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/active_utils/common/network_connection_retries.rb', line 17 def retry_exceptions(={}) connection_errors = DEFAULT_CONNECTION_ERRORS.merge([:connection_exceptions] || {}) retry_network_exceptions() do begin yield rescue Errno::ECONNREFUSED => e raise ActiveMerchant::RetriableConnectionError, "The remote server refused the connection" rescue OpenSSL::X509::CertificateError => e NetworkConnectionRetries.log([:logger], :error, e., [:tag]) raise ActiveMerchant::ClientCertificateError, "The remote server did not accept the provided SSL certificate" rescue Zlib::BufError => e raise ActiveMerchant::InvalidResponseError, "The remote server replied with an invalid response" rescue *connection_errors.keys => e raise ActiveMerchant::ConnectionError, connection_errors[e.class] end end end |