module CryptKeeper::Helper::SQL
Private Instance Methods
escape_and_execute_sql(query, new_transaction: false)
click to toggle source
Private: Sanitize an sql query and then execute it.
query - the sql query new_transaction - if the query should run inside a new transaction
Returns the ActiveRecord response.
# File lib/crypt_keeper/helper.rb, line 12 def escape_and_execute_sql(query, new_transaction: false) query = ::ActiveRecord::Base.send :sanitize_sql_array, query # force binary encoding to avoid "invalid byte sequence in UTF-8" errors # when we send binary AES keys (f.ex) to the database query = query.b if query.respond_to?(:b) if CryptKeeper.silence_logs? ::ActiveRecord::Base.logger.silence do execute_sql(query, new_transaction: new_transaction) end else execute_sql(query, new_transaction: new_transaction) end end
execute_sql(query, new_transaction: false)
click to toggle source
Private: Executes the query.
query - the sql query new_transaction - if the query should run inside a new transaction
Returns an Array.
# File lib/crypt_keeper/helper.rb, line 34 def execute_sql(query, new_transaction: false) if new_transaction ::ActiveRecord::Base.transaction(requires_new: true) do ::ActiveRecord::Base.connection.execute(query).first end else ::ActiveRecord::Base.connection.execute(query).first end end