使用WSL和postgresql安装rails

时间:2017-11-30 13:13:42

标签: windows postgresql ruby-on-rails-4 windows-subsystem-for-linux

我正在尝试在Windows 10上设置rails环境开发。

我遵循'go_rails'(https://gorails.com/setup/windows/10

的教程

大多数安装似乎工作正常(当我在bash中输入rby -v或rails -v时它会返回预期的结果)。

我的问题是使用postresql,它用于我正在处理它的项目。

按照本教程的说明,我直接在Windows上安装Postgresql(10)。它似乎工作,因为可以在Windows上使用pgadmin登录或在bash中键入“psql -p 5432 -h localhost -U postgres”。

所以它看起来像postgresql正在工作,但是当我做一个rake db:在bash中创建时,我收到一个错误:无法连接到服务器:没有这样的文件或目录。服务器是否在本地运行并接受Unix域套接字'/var/run/postgresql/.s.PGSQL.5432'上的连接

在postgresql.conf(C:/ Programms /.../ Data / postgresql.conf)中,listen_addresses设置为'*'。

有一行名为'#unix_socket_directoris ='''之后,你应该在那里设置一些东西吗?

我真的需要让这个项目有效。

感谢您的帮助

3 个答案:

答案 0 :(得分:3)

问题可能是您已经为PostgreSQL安装了Windows二进制文件,但是您尝试使用不存在的Unix套接字从Windows Subsystem for Linux连接到它。

您需要使用TCP / IP连接而不是Unix套接字。在命令行上键入psql时,添加选项--host=127.0.0.1以通过TCP / IP进行连接。

答案 1 :(得分:1)

我刚刚完成了整个Go Rails教程,我也遇到了rake db:create步骤的麻烦。您需要做的就是将host:127.0.0.1添加到您的database.yml,如下所示。在运行rake db:create。

之前,请确保启动PostgreSQL
default: &default
  host: 127.0.0.1
  adapter: postgresql
  encoding: unicode
  username: postgres
  password: ENV['POSTGRESQL_PASSWORD']
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: app_development

test:
  <<: *default
  database: app_test

production:
  <<: *default
  database: app_production
  username: app_username
  password: <%= ENV['APP_DATABASE_PASSWORD'] %>

答案 2 :(得分:0)

在database.yml中将host: localhost添加到您的default:中。如果没有告诉主机在哪里寻找主机的信息,它将在linux中寻找进程,因为Windows进程没有暴露于wsl层,所以这当然是行不通的。