]> git.openstreetmap.org Git - rails.git/blobdiff - config/initializers/abstract_adapter.rb
Replace alias_method_chain with Module#prepend
[rails.git] / config / initializers / abstract_adapter.rb
index 7288488a6dcd63aec4d3c2a8237fe69ba92ac029..290e2493d943c26470eb54d6e2a2b49f28041b5d 100644 (file)
@@ -1,28 +1,17 @@
 if defined?(ActiveRecord::ConnectionAdaptors::AbstractAdapter)
 if defined?(ActiveRecord::ConnectionAdaptors::AbstractAdapter)
-  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
-            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("time's up!")
+  module OSM
+    module AbstractAdapter
+      module PropagateTimeouts
+        def translate_exception_class(e, sql)
+          if e.is_a?(Timeout::Error) || e.is_a?(OSM::APITimeoutError)
+            e
           else
           else
-            raise
+            super(e, sql)
           end
         end
       end
     end
   end
           end
         end
       end
     end
   end
+
+  ActiveRecord::ConnectionAdaptors::AbstractAdapter.prepend(OSM::AbstractAdapter::PropagateTimeouts)
 end
 end