summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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