diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-05-15 14:39:38 +0000 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-05-15 14:39:38 +0000 |
commit | 35729671fb3a123ddeb7b2b1cda446fd661bd4e6 (patch) | |
tree | ed4b4ae8a4acc0824a7bd034cc17c5dec6b05728 | |
parent | 25b0968846700d762b034fdb26c9beab461a4b1c (diff) | |
parent | 61ceb45088d9bfb04890866718f87686bfb5f3c1 (diff) | |
download | gitlab-ce-35729671fb3a123ddeb7b2b1cda446fd661bd4e6.tar.gz |
Merge branch 'attr_encryped_no_db_connection' into 'master'
Don't require DB connection in AttrEncrypted.
See merge request !667
-rw-r--r-- | config/initializers/attr_encrypted_no_db_connection.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/config/initializers/attr_encrypted_no_db_connection.rb b/config/initializers/attr_encrypted_no_db_connection.rb new file mode 100644 index 00000000000..c668864089b --- /dev/null +++ b/config/initializers/attr_encrypted_no_db_connection.rb @@ -0,0 +1,20 @@ +module AttrEncrypted + module Adapters + module ActiveRecord + def attribute_instance_methods_as_symbols_with_no_db_connection + # 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 + attribute_instance_methods_as_symbols_without_no_db_connection + 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 + + alias_method_chain :attribute_instance_methods_as_symbols, :no_db_connection + end + end +end |