summaryrefslogtreecommitdiff
path: root/config/initializers/attr_encrypted_no_db_connection.rb
blob: e007666b852e85db5eda2767dc8b88e442c1e893 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module AttrEncrypted
  module Adapters
    module ActiveRecord
      module DBConnectionQuerier
        def attribute_instance_methods_as_symbols
          # Use with_connection so the connection doesn't stay pinned to the thread.
          connected = ::ActiveRecord::Base.connection_pool.with_connection(&:active?) rescue false

          if connected
            # Call version from AttrEncrypted::Adapters::ActiveRecord
            super
          else
            # Call version from AttrEncrypted, i.e., `super` with regards to AttrEncrypted::Adapters::ActiveRecord
            AttrEncrypted.instance_method(:attribute_instance_methods_as_symbols).bind(self).call
          end
        end
      end
      prepend DBConnectionQuerier
    end
  end
end