11

我对 RoR 很陌生,我希望将我的下一个应用程序部署到 heroku。我希望我的开发和测试环境与我的生产环境相匹配,以实现最平稳的过渡。因此,我开始在我的系统上安装 postgresql。这个过程非常令人沮丧,我非常困惑。我遵循了无数教程,但无济于事,而且似乎很多都有相互矛盾的信息。这是我所知道的:

有很多方法可以安装 postgresql。常见的选项是 macports、homebrew、fink、Postgresql.app 或 enterpriseDB。一旦你安装了前面的一个,你必须创建你的 rails 应用程序并运行:

rails new <app_name> -d postgresql

或运行标准的“rails new”,然后在 gemfile 中将“sqlite3”更改为“pg”。然后,如果我是正确的,您实际上必须通过执行以下操作在命令行中创建自己的数据库:

$ psql
$ CREATE DATABASE your_database_name;

然后,编辑您的 database.yml 以遵循以下内容:

development:
  adapter: postgresql
  encoding: unicode
  database: <your_database_name>
  host: localhost
  pool: 5
  username: <username>
  password:

一旦完成,一切都应该很好。但是,我遇到了问题。我实际上使用上述过程让它工作,但我对它的运行方式感到困惑。在试图让这一切正常工作的几个小时里,我安装了 macports、homebrew 和 postgresql.app。但是,每当我尝试在没有运行 postgresql.app 的情况下与数据库交互(例如“rake db:migrate”)时,我都会收到此错误:

could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

如果我重新启动它,一切都很好。好的,这让我假设我的系统正在使用 postgresql.app 来运行 postresql。有了这些信息,我自信地卸载了 postgresql 的 macports 和 hombrew 安装。但是,这样做后,我在尝试与数据库交互时收到此错误:

Library not loaded: /usr/local/lib/libpq.5.4.dylib (LoadError)

我重新安装了macports,仍然得到同样的错误。然后我重新安装自制软件,错误消失了。然后我再次卸载macports,一切都很好。似乎 postgresql.app 和我的自制软件安装在某种程度上相互依赖。如果我是正确的,它们应该能够彼此独立运行,因为每个都是 postgreql 的完整安装。在这一点上,我几乎没有想法。非常感谢有关如何完成此过程的任何和所有输入。

编辑

$ which psql

显示:

/usr/local/bin/psql

ls -l /usr/local/bin/psql

显示:

lrwxr-xr-x  1 robertquinn  admin  35 Jul 29 17:32 /usr/local/bin/psql -> ../Cellar/postgresql/9.1.4/bin/psql 
4

1 回答 1

7

自制绝对是要走的路。经过多年使用 Macports,我发现 Homebrew易于使用、升级和维护。

如果您是 Homebrew 的新手,有时当您安装某些东西时,会在安装结束时打印输出,从而为您提供额外的任务。有时安装会要求您手动创建新链接,有时它会要求您使用位于地窖的新可执行文件重做链接。确保您阅读了该输出并遵循这些安装后说明。

遵循这些说明后,打开一个新的终端窗口以确保您的设置得到遵守。

此外,如果您使用rails new app_name -D postgresql,您的database.yml文件应该已经正确配置,除非您当然已将 postgres 实例配置为使用用户名和密码。

为了使启动和停止 postgres 更容易,我将这些命令添加到我的.profile文件中

# postgres
alias pg_start="pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start"
alias pg_stop="pg_ctl -D /usr/local/var/postgres stop -s -m fast"
于 2012-08-05T16:13:55.497 回答