diff options
author | Douwe Maan <douwe@gitlab.com> | 2015-05-15 14:34:22 +0200 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2015-05-15 14:34:22 +0200 |
commit | b77e1ae6f78461a1721150538158480d99bd899b (patch) | |
tree | 2a70e9bb63ea0f21414ab6436c476af61ecd9b23 | |
parent | 25b0968846700d762b034fdb26c9beab461a4b1c (diff) | |
download | gitlab-ce-b77e1ae6f78461a1721150538158480d99bd899b.tar.gz |
Don't require DB conncetion in AttrEncrypted.
-rw-r--r-- | config/initializers/attr_encrypted_no_db_connection.rb | 29 |
1 files changed, 29 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..72e257a013e --- /dev/null +++ b/config/initializers/attr_encrypted_no_db_connection.rb @@ -0,0 +1,29 @@ +module AttrEncrypted + module Adapters + module ActiveRecord + protected + + def attribute_instance_methods_as_symbols + # We add accessor methods of the db columns to the list of instance + # methods returned to let ActiveRecord define the accessor methods + # for the db columns + if connection_established? && table_exists? + columns_hash.keys.inject(super) {|instance_methods, column_name| instance_methods.concat [column_name.to_sym, :"#{column_name}="]} + else + super + end + end + + def connection_established? + begin + # use with_connection so the connection doesn't stay pinned to the thread. + ActiveRecord::Base.connection_pool.with_connection { + ActiveRecord::Base.connection.active? + } + rescue Exception + false + end + end + end + end +end |