From ba07c9f7f599cecac2c0840484f8bfc62d9e716b Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 15 May 2015 14:56:04 +0200 Subject: Improve fix. --- .../attr_encrypted_no_db_connection.rb | 25 +++++++++++----------- 1 file 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 -- cgit v1.2.1