travis-api/lib/active_record_postgres_variables.rb

30 lines
892 B
Ruby

# This backports support for the :variables option on postgres database details from ActiveRecord 4 to ActiveRecord 3.
require 'active_record'
if ActiveRecord::VERSION::MAJOR < 4
require 'active_record/connection_adapters/postgresql_adapter'
module ActiveRecordPostgresVariables
def configure_connection
result = super
set_variables
result
end
def set_variables
return unless variables = @config[:variables]
# copied from AR 4.2.1
variables.map do |k, v|
if v == ':default' || v == :default
# Sets the value to the global or compile default
execute("SET SESSION #{k} TO DEFAULT", 'SCHEMA')
elsif !v.nil?
execute("SET SESSION #{k} TO #{quote(v)}", 'SCHEMA')
end
end
end
end
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(ActiveRecordPostgresVariables)
end