在OSX上安装PostgreSQL以进行Rails开发

时间:2010-02-16 06:40:28

标签: ruby-on-rails macos postgresql installation

过去几天我花了几个小时试图让PostgreSQL在Mac上与RoR玩得很好。

我已经使用了几种不同的方法,例如手动安装PostgreSQL和从各种一键安装程序安装

然而,我尝试的所有不同方法在安装pg gem的最后一步失败了。很沮丧!

这里有没有人有一个经过试验和测试的教程来完成这项工作? (或者你想在这里写一些指示......?)

我的环境是这样的:Macbook运行OSX 10.6,PostgreSQL 8.4.1服务器

6 个答案:

答案 0 :(得分:31)

我想我已经找到了一种有效的方法。我从this great post 1 大量借用,但由于他们同时安装了许多其他东西,我将写出我在这里为那些正义的人做的事情。寻找PostgreSQL安装答案。

1 编者注:当我尝试时,链接似乎已经死了。这是一个吗? http://blog.blackwhale.at/?p=175#PostgreSQL如果是,请修复。

  1. 下载PostgreSQL for Mac并下载“Postgres.app”安装程序。

  2. 为您的rails开发创建一个用户(请记住,如果您在开发期间共享应用程序,您可能希望开发团队的所有成员之间使用相同的用户以避免头痛)

    sudo -u postgres /Library/PostgreSQL8/bin/createuser
    
  3. 输入您的Mac OS X系统用户名作为角色名称,并使其成为超级用户。

  4. 安装pg gem,以便Rails可以与PostgreSQL交谈

    sudo env PATH=/Library/PostgreSQL8/bin:$PATH gem install pg
    
  5. 配置您的rails应用程序与PostgreSQL交谈。您可以使用以下命令创建新应用程序:

    rails *appname* -d postgresql (for Rails 3 -> rails new *appname* -d postgresql)
    

    或者对于现有应用,请修改您的database.yml文件。

  6. 这对我有用而没有任何打嗝。如果其他人尝试使用这种方法,我会有兴趣听到一些关于它如何适合你的反馈。

答案 1 :(得分:3)

在64位Mac(带有Core 2 Duo或更新版本的Snow Leopard)上,我不得不从源代码编译PostgreSQL,因为rails一直在抱怨:

*** Your PostgreSQL installation doesn't seem to have an architecture in common
with the running ruby interpreter (["ppc", "i386", "x86_64"] vs. [])

架构不匹配可能是因为我从源代码编译了rails,它默认为64位。 postgresql.org上的二进制安装程序似乎只是一个32位版本。设置ARCHFLAGS并没有解决这个问题。

无论如何,如果你从postgresql.org下载[source] [1]并按照INSTALL文件中的说明操作,那就相当简单了。如果您使用自己的帐户,则无需创建新用户。我必须创建sysctl.conf文件来扩展共享内存 - 只需google'postgresql os x sysctl.conf'

答案 2 :(得分:3)

老问题,但也许我可以用这个(相当简单的)解决方案帮助某人:

gem install pg -- --with-opt-include=/opt/local/include/postgresql84/ --with-opt-lib=/opt/local/lib/postgresql84/

答案 3 :(得分:2)

  1. 下载并安装MacPorts
  2. 启动终端
  3. sudo port install ruby postgresql83-server rb-postgres rb-gems rb-rails

答案 4 :(得分:0)

感谢Ganesh给出的好答案,我的sudo url看起来有点不同:)这就是我所拥有的sudo -u postgres /Library/PostgreSQL/9.2/bin/createuser

答案 5 :(得分:0)

Ryan Bate的Railscast on PostgreSQL引导您在Homebrew的Mac上进行设置。非常简单,在OSX 10.6.8上为我工作。