30 lines
892 B
Ruby
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 |