Postgres.app升级,现在Rails应用程序无法启动

时间:2013-05-20 14:37:49

标签: heroku ruby-on-rails-3.2 postgresql-9.2 postgres.app

我刚刚将Postgres.app升级到最新版本(9.2.4.1),现在无法使用Foreman或Rails服务器启动我的Rails应用程序。

/Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg.rb:4:in `require': dlopen(/Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg_ext.bundle, 9): Library not loaded: @executable_path/../lib/libssl.1.0.0.dylib (LoadError)

Referenced from: /Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib

Reason: image not found - /Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg_ext.bundle


  • 查看Postgres.app documentation

  • 从9.2.2.0升级到9.2.4.1不是新的次要版本,因此不应涉及pg_upgrade

  • .bashrc具有正确的PATH PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

  • 设置
  • 卸载并重新安装PG gem。

  • 错误地认为我需要通过自制软件安装PostGIS,但是通过Brew自动安装Postgres以及其他一些依赖项。

如果我将Postgres.app版本换回到9.2.2.0,一切都会再次运行。由于Postgres.app是一个拖放安装,为什么从9.2.2.0升级到9.2.4.1导致了这个?

2 个答案:

答案 0 :(得分:6)

我找到了一个适合我的解决方案,并且需要最少的黑客/配置。您只需要执行一次,它将适用于每个bundle安装。将以下内容添加到.bash_profile,.bash_rc或等效内容中:

export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH

(假设您在默认位置安装了Postgres.app)。然后重新启动终端会话,然后重试。

直接导出到DYLD_LIBRARY_PATH会导致其他依赖它的应用程序出现严重问题,但使用回退路径可以避免这些问题。

另见:

编辑:当您尝试运行psql时,似乎设置DYLD_FALLBACK_LIBRARY_PATH会导致错误。要解决此问题,您可以将以下两行添加到.bash_profile:

alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)";

这假设您正在使用bash并且.bash_profile位于您的主目录中。如果不是这种情况(或者如果您使用.bashrc或其他环境设置而不是.bash_profile),请将命令的~/.bash_profile部分更改为环境设置脚本的路径。

别名命令基本上启动一个不会影响当前bash环境的子shell。因此,当它取消设置DYLD_FALLBACK_LIBRARY_PATH变量时,它只是临时的。退出psql后,将再次设置环境变量,以便rails正常运行。

答案 1 :(得分:0)

您应用中的pg gem很可能是针对旧库构建的。尝试针对新的Postgres.app重建它:

$ gem uninstall pg
[...]
$ bundle install
[...]
"installing pg" (or something..)