无法通过Sinatra应用(在WSL上为Sinatra,在Windows上为PSQ)连接到PSQL

时间:2018-09-05 03:31:24

标签: postgresql activerecord sinatra windows-subsystem-for-linux

我一直在使用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

0 个答案:

没有答案