X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/e3cbeeae9453a0108733316e5119d0038abab760..ad6c0d3ebabdfe985ce91b10e3ae07b68ebd768f:/config/initializers/abstract_adapter.rb diff --git a/config/initializers/abstract_adapter.rb b/config/initializers/abstract_adapter.rb index 7b22a3cc6..2bc4f5e59 100644 --- a/config/initializers/abstract_adapter.rb +++ b/config/initializers/abstract_adapter.rb @@ -1,24 +1,17 @@ -module ActiveRecord - module ConnectionAdapters - class AbstractAdapter - protected - alias_method :old_log, :log - - def log(sql, name) - if block_given? - old_log(sql, name) do - yield +if defined?(ActiveRecord::ConnectionAdaptors::AbstractAdapter) + module OpenStreetMap + module AbstractAdapter + module PropagateTimeouts + def translate_exception_class(e, sql) + if e.is_a?(Timeout::Error) || e.is_a?(OSM::APITimeoutError) + e + else + super(e, sql) end - else - old_log(sql, name) - end - rescue ActiveRecord::StatementInvalid => ex - if ex =~ /^OSM::APITimeoutError: / - raise OSM::APITimeoutError - else - raise end end end end + + ActiveRecord::ConnectionAdaptors::AbstractAdapter.prepend(OpenStreetMap::AbstractAdapter::PropagateTimeouts) end