我一直在使用WSL在本地计算机上运行带有PSQL数据库的Rails应用程序。到目前为止,只要将行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