Не удается подключиться к PSQL через приложение Sinatra (Sinatra в WSL, PSQ в Windows) - PullRequest
0 голосов
/ 05 сентября 2018

Я использую WSL для запуска приложений Rails с базами данных PSQL на моей локальной машине. До сих пор нет проблем с базой данных, использующей эту настройку, пока я добавляю строку host: localhost в конфигурации database.yml по умолчанию. Я пытаюсь настроить существующий проект, используя Sinatra (с некоторыми изменениями) на моей машине. В этом проекте у меня возникли проблемы с настройкой подключения к серверу PSQL. Я проверил pgAdmin и сервер настроен, я даже создал новое тестовое приложение Rails и мог создать базу данных. Но когда я пытаюсь создать базу данных в этом приложении Sinatra, я получаю следующую ошибку:

createdb: could not connect to database template1: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"

Я пытался добавить конфигурацию разработки, но каждый раз получаю одну и ту же ошибку:

  • host: 'localhost'
  • host: '127.0.01'
  • host: 'localhost', port: 5432
  • host: '127.0.0.1', port: 5432

В этом проекте конфигурации БД настроены в config/database.rb, который я включил сюда:

     if Sinatra::Application.development?

     ActiveRecord::Base.logger = Logger.new(STDOUT)

    end

    Dir[APP_ROOT.join('models', '*.rb')].each do |model_file|

     filename = File.basename(model_file).gsub('.rb', '')

     autoload ActiveSupport::Inflector.camelize(filename), model_file

    end


    db = URI.parse(ENV['DATABASE_URL'] || "postgres://localhost/quora_clone_development")

    DB_NAME = db.path[1..-1]

    if Sinatra::Application.development?

     ActiveRecord::Base.establish_connection(

       adapter:  db.scheme == 'postgres' ? 'postgresql' : db.scheme,

       database: DB_NAME,

       encoding: 'utf8',

       host: 'postgres://127.0.0.1'

     )

    else

     ActiveRecord::Base.establish_connection(

       adapter:  db.scheme == 'postgres' ? 'postgresql' : db.scheme,

       host:     db.host,

       port:     db.port,

       username: db.user,

       password: db.password,

       database: DB_NAME,

       encoding: 'utf8'

     )

    end
...