    # File lib/active_record/connection_adapters/abstract/connection_specification.rb, line 204
        def self.establish_connection(spec = nil)
          case spec
            when nil
              raise AdapterNotSpecified unless defined? RAILS_ENV
              establish_connection(RAILS_ENV)
            when ConnectionSpecification
              clear_active_connection_name
              @active_connection_name = name
              @@defined_connections[name] = spec
            when Symbol, String
              if configuration = configurations[spec.to_s]
                establish_connection(configuration)
              else
                raise AdapterNotSpecified, "#{spec} database is not configured"
              end
            else
              spec = spec.symbolize_keys
              unless spec.key?(:adapter) then raise AdapterNotSpecified, "database configuration does not specify adapter" end

              begin
                require 'rubygems'
                gem "activerecord-#{spec[:adapter]}-adapter"
                require "active_record/connection_adapters/#{spec[:adapter]}_adapter"
              rescue LoadError
                begin
                  require "active_record/connection_adapters/#{spec[:adapter]}_adapter"
                rescue LoadError
                  raise "Please install the #{spec[:adapter]} adapter: `gem install activerecord-#{spec[:adapter]}-adapter` (#{$!})"
                end
              end

              adapter_method = "#{spec[:adapter]}_connection"
              if !respond_to?(adapter_method)
                raise AdapterNotFound, "database configuration specifies nonexistent #{spec[:adapter]} adapter"
              end

              remove_connection
              establish_connection(ConnectionSpecification.new(spec, adapter_method))
          end
        end