summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-05-15 14:56:04 +0200
committerDouwe Maan <douwe@gitlab.com>2015-05-15 14:56:04 +0200
commitba07c9f7f599cecac2c0840484f8bfc62d9e716b (patch)
tree12969a60a50e894360375a2a7c424781bf74933d
parentb77e1ae6f78461a1721150538158480d99bd899b (diff)
downloadgitlab-ce-attr_encryped_no_db_connection.tar.gz
-rw-r--r--config/initializers/attr_encrypted_no_db_connection.rb25
1 files changed, 12 insertions, 13 deletions
diff --git a/config/initializers/attr_encrypted_no_db_connection.rb b/config/initializers/attr_encrypted_no_db_connection.rb
index 72e257a013e..e270028f45d 100644
--- a/config/initializers/attr_encrypted_no_db_connection.rb
+++ b/config/initializers/attr_encrypted_no_db_connection.rb
@@ -1,25 +1,24 @@
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}="]}
+ def attribute_instance_methods_as_symbols_with_no_db_connection
+ if connection_established?
+ # Call version from AttrEncrypted::Adapters::ActiveRecord
+ attribute_instance_methods_as_symbols_without_no_db_connection
else
- super
+ # Call version from AttrEncrypted (`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
+
+ private
+
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?
- }
+ # Use with_connection so the connection doesn't stay pinned to the thread.
+ ActiveRecord::Base.connection_pool.with_connection { |con| con.active? }
rescue Exception
false
end