]> source.dussan.org Git - sonarqube.git/blob
68733ab811baec2e5a641f8a1af4e41178b7cfde
[sonarqube.git] /
1 module ActiveRecord
2   module ConnectionAdapters
3     module JdbcConnectionPoolCallbacks
4       def self.included(base)
5         if base.respond_to?(:set_callback) # Rails 3 callbacks
6           base.set_callback :checkin, :after, :on_checkin
7           base.set_callback :checkout, :before, :on_checkout
8         else
9           base.checkin :on_checkin
10           base.checkout :on_checkout
11         end
12       end
13
14       def self.needed?
15         ActiveRecord::Base.respond_to?(:connection_pool)
16       end
17
18       def on_checkin
19         # default implementation does nothing
20       end
21
22       def on_checkout
23         # default implementation does nothing
24       end
25     end
26
27     module JndiConnectionPoolCallbacks
28       def self.prepare(adapter, conn)
29         if ActiveRecord::Base.respond_to?(:connection_pool) && conn.jndi_connection?
30           adapter.extend self
31           conn.disconnect! # disconnect initial connection in JdbcConnection#initialize
32         end
33       end
34
35       def on_checkin
36         disconnect!
37       end
38
39       def on_checkout
40         reconnect!
41       end
42     end
43   end
44 end