]> git.openstreetmap.org Git - rails.git/blobdiff - config/initializers/abstract_adapter.rb
Merge remote-tracking branch 'upstream/pull/2362'
[rails.git] / config / initializers / abstract_adapter.rb
index fbae428cbbc5cc9b2dbdbfef312db0694ea90f27..2bc4f5e59d40d07f552d36417bd3f211eda8d6ee 100644 (file)
@@ -1,26 +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.message =~ /^OSM::APITimeoutError: /
-          raise OSM::APITimeoutError.new
-        elsif ex.message =~ /^Timeout::Error: /
-          raise Timeout::Error.new
-        else
-          raise
         end
       end
     end
   end
+
+  ActiveRecord::ConnectionAdaptors::AbstractAdapter.prepend(OpenStreetMap::AbstractAdapter::PropagateTimeouts)
 end