Postgresql.app vs Homebrew

fly*_*llo 9 ruby-on-rails heroku ruby-on-rails-3

我对RoR很新,我希望将我的下一个应用程序部署到heroku.我希望我的开发和测试环境与我的生产环境相匹配,以实现最顺利的过渡.因此,我开始在我的系统上安装postgresql.这个过程令人沮丧,我感到困惑.我跟随无数的教程无济于事,似乎很多人都有相互矛盾的信息.这就是我所知道的:

有很多方法可以安装postgresql.常见的选项是macports,homebrew,fink,Postgresql.app或enterpriseDB.安装上一个之后,您必须创建rails应用程序并运行:

rails new <app_name> -d postgresql
Run Code Online (Sandbox Code Playgroud)

或运行标准'rails new'然后在gemfile中将'sqlite3'更改为'pg'.然后,如果我是正确的,你实际上必须通过这样做在命令行中创建自己的数据库:

$ psql
$ CREATE DATABASE your_database_name;
Run Code Online (Sandbox Code Playgroud)

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

development:
  adapter: postgresql
  encoding: unicode
  database: <your_database_name>
  host: localhost
  pool: 5
  username: <username>
  password:
Run Code Online (Sandbox Code Playgroud)

一旦完成,一切都应该好.但是,我遇到了问题.我实际上使用上面的过程工作,但我很困惑它是如何运行的.在尝试使所有这些工作的几个小时内,我安装了macports,homebrew和postgresql.app.但是,每当我尝试与数据库进行交互(例如'rake db:migrate')而没有运行postgresql.app时,我会收到此错误:

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?
Run Code Online (Sandbox Code Playgroud)

如果我重新开火,一切都很好.好的,所以这导致我假设我的系统使用postgresql.app来运行postresql.有了这些信息,我自信地卸载了postgresql的macports和hombrew安装.但是,执行此操作时,我在尝试与数据库交互时收到此错误:

Library not loaded: /usr/local/lib/libpq.5.4.dylib (LoadError)
Run Code Online (Sandbox Code Playgroud)

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

编辑

$ which psql
Run Code Online (Sandbox Code Playgroud)

说明:

/usr/local/bin/psql
Run Code Online (Sandbox Code Playgroud)

ls -l /usr/local/bin/psql
Run Code Online (Sandbox Code Playgroud)

说明:

lrwxr-xr-x  1 robertquinn  admin  35 Jul 29 17:32 /usr/local/bin/psql -> ../Cellar/postgresql/9.1.4/bin/psql 
Run Code Online (Sandbox Code Playgroud)

sor*_*ens 5

Homebrew肯定是要走的路.经过多年使用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"
Run Code Online (Sandbox Code Playgroud)