PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Тестване на Cucumber и RSpec със zeus:Postgres е достъпен от други потребители

Вдъхновен от този отговор , създадохме следния database.rake файл. Когато оригиналният отговор работи само за PostgreSQL 9.1, този е модифициран, за да работи и за PostgreSQL 9.2. Механизмът не е от най-красивите:когато командата 9.1 се провали, той просто изпълнява командата 9.2. Но най-важното:работи!

#{Rails.root}/lib/tasks/databases.rake
# monkey patch ActiveRecord to avoid There are n other session(s) using the database.
def drop_database(config)
  case config['adapter']
  when /mysql/
    ActiveRecord::Base.establish_connection(config)
    ActiveRecord::Base.connection.drop_database config['database']
  when /sqlite/
    require 'pathname'
    path = Pathname.new(config['database'])
    file = path.absolute? ? path.to_s : File.join(Rails.root, path)

    FileUtils.rm(file)
  when /postgresql/
    begin
      ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
      ActiveRecord::Base.connection.select_all("select * from pg_stat_activity order by procpid;").each do |x|
        if config['database'] == x['datname'] && x['current_query'] =~ /<IDLE>/
          ActiveRecord::Base.connection.execute("select pg_terminate_backend(#{x['procpid']})")
        end
      end
      ActiveRecord::Base.connection.drop_database config['database']
    rescue # in PG 9.2 column procpid was renamed pid and the query status is checked not using 'current_query' but using 'state'
      ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
      ActiveRecord::Base.connection.select_all("select * from pg_stat_activity order by pid;").each do |x|
        if config['database'] == x['datname'] && x['state'] =~ /idle/
          ActiveRecord::Base.connection.execute("select pg_terminate_backend(#{x['pid']})")
        end
      end
      ActiveRecord::Base.connection.drop_database config['database']
    end
  end
end


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails:Отказано е разрешение на Postgres за създаване на база данни на rake db:create:all

  2. PostgreSQL математически функции

  3. Как да гарантирам, че дублиращите се редове не се добавят към моята таблица на база данни чрез activerecords?

  4. Как да се свържете с Postgres чрез Node.js

  5. Rails 3.2 - недефиниран метод `where' за #<Array:... - Заявка на Model.where()