Я использую 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