mem*_*oht 3 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
从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会导致这种情况?
我找到了一个适合我的解决方案,并且需要最少的黑客/配置.您只需要执行一次,它将适用于每个bundle安装.将以下内容添加到.bash_profile,.bash_rc或等效内容中:
export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
(假设您在默认位置安装了Postgres.app).然后重新启动终端会话,然后重试.
直接导出到DYLD_LIBRARY_PATH可能会导致其他依赖它的应用程序出现严重问题,但使用回退路径可以避免这些问题.
也可以看看:
编辑:当您尝试运行psql时,似乎设置DYLD_FALLBACK_LIBRARY_PATH会导致错误.要解决此问题,您可以将以下两行添加到.bash_profile:
alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)";
Run Code Online (Sandbox Code Playgroud)
这假设您正在使用bash并且.bash_profile位于您的主目录中.如果不是这种情况(或者如果您使用.bashrc或其他环境设置而不是.bash_profile)~/.bash_profile,请将命令的一部分更改为环境设置脚本的路径.
别名命令基本上启动一个子shell,它不会影响您当前的bash环境.因此,当它取消设置DYLD_FALLBACK_LIBRARY_PATH变量时,它只是临时的.退出psql后,将再次设置环境变量,以便rails正常运行.