summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-05-15 14:39:38 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-05-15 14:39:38 +0000
commit35729671fb3a123ddeb7b2b1cda446fd661bd4e6 (patch)
treeed4b4ae8a4acc0824a7bd034cc17c5dec6b05728
parent25b0968846700d762b034fdb26c9beab461a4b1c (diff)
parent61ceb45088d9bfb04890866718f87686bfb5f3c1 (diff)
downloadgitlab-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.rb20
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