Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在带有postgres.app的rvm下要求pg时出错_Ruby_Postgresql_Rvm_Pg - Fatal编程技术网

Ruby 在带有postgres.app的rvm下要求pg时出错

Ruby 在带有postgres.app的rvm下要求pg时出错,ruby,postgresql,rvm,pg,Ruby,Postgresql,Rvm,Pg,我在OSX(10.8.3)上使用。我已修改了我的路径,以便应用程序的bin文件夹位于所有其他文件夹之前 Rammy:~ phrogz$ which pg_config /Applications/Postgres.app/Contents/MacOS/bin/pg_config 我已经安装了rvm,可以安装pg gem而不会出错,但当我需要它时,我得到一个错误: Rammy:~ phrogz$ gem -v 1.8.25 Rammy:~ phrogz$ gem install pg Fetc

我在OSX(10.8.3)上使用。我已修改了我的
路径
,以便应用程序的
bin
文件夹位于所有其他文件夹之前

Rammy:~ phrogz$ which pg_config
/Applications/Postgres.app/Contents/MacOS/bin/pg_config
我已经安装了rvm,可以安装pg gem而不会出错,但当我需要它时,我得到一个错误:

Rammy:~ phrogz$ gem -v
1.8.25

Rammy:~ phrogz$ gem install pg
Fetching: pg-0.15.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed pg-0.15.1
1 gem installed

Rammy:~ phrogz$ ruby -v -e "require 'pg'"
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.3.0]
/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': dlopen(/Users/phrogz/.rvm/gems/ruby-1.9.3-p392/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/phrogz/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.1/lib/pg_ext.bundle
    from /Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/phrogz/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.1/lib/pg.rb:4:in `<top (required)>'
    from /Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
    from /Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
    from /Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from -e:1:in `<main>'
Rammy:~phrogz$gem-v
1.8.25
拉米:~phrogz$gem安装页面
取数:pg-0.15.1.gem(100%)
构建本机扩展。这可能需要一段时间。。。
已成功安装pg-0.15.1
已安装1个gem
拉米:~phrogz$ruby-v-e“需要‘pg’”
ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-darwin12.3.0]
/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_-ruby/1.9.1/rubygems/custom_-require.rb:36:in'require':dlopen(/Users/phrogz/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.1/lib/pg_ext.bundle,9):库未加载:@executable_-path/./lib/lib/libssl.1.0.0.0.dylib(LoadError)
引用自:/Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib
原因:找不到映像-/Users/phrogz/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.1/lib/pg_ext.bundle
from/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:36:in'require'
from/Users/phrogz/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.1/lib/pg.rb:4:in`'
from/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:60:in'require'
来自/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:60:“在require中救援”
from/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:35:in'require'
from-e:1:in`'

我需要做什么才能正确安装
pg
gem?

Edit:尽管这个答案目前的投票数比公认的答案多,但公认的答案要简单得多,也要干净得多


安装
pg
gem时,请从路径中删除Postgres.app二进制文件,并使用OS X内置的Postgres安装来配置gem。稍后,
pg
库仍将正确连接到Postgres.app服务器

Rammy:~phrogz$gem卸载pg
已成功卸载pg-0.15.1
#修改路径以删除/Applications/Postgres.app/Contents/MacOS/bin
拉米:~phrogz$gem安装页面
取数:pg-0.15.1.gem(100%)
构建本机扩展。这可能需要一段时间。。。
已成功安装pg-0.15.1
已安装1个gem
拉米:~phrogz$ruby-v-e“需要‘pg’”
ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-darwin12.3.0]

问题在于gem与Postgres.app的链接。 如果您将其链接到osx附带的postgres版本

下面是一个小脚本:

  • 如果将rvm与项目宝石一起使用:更改为您的项目
  • 运行以下命令:

    gem uninstall pg
    
    PATH=${PATH/'Postgres.app'/'WRONGFOLDER.app'}
    gem install pg
    PATH=${PATH/'WRONGFOLDER.app'/'Postgres.app'}
    
  • 现在一切都好了


我找到了一个适合我的解决方案,只需要最少的黑客攻击/配置。您只需执行一次,它将适用于每个捆绑包安装。将以下内容添加到.bash_配置文件、.bash_rc或等效文件中:

export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH
(假设您在默认位置安装了Postgres.app)。然后重新启动终端会话并重试

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

另见:

编辑:在尝试运行psql时,设置DYLD\u FALLBACK\u LIBRARY\u路径似乎会导致错误。要解决此问题,可以将以下两行添加到.bash_配置文件中:

alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)";
这是假设您正在使用bash,并且.bash_配置文件位于您的主目录中。如果不是这样(或者如果您使用的是.bashrc或其他环境设置而不是.bash\u配置文件),请将命令的
~/.bash\u配置文件
部分更改为环境设置脚本的路径

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

这对我来说很有效:

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config

只需再次检查/Applications/Postgres93.app。。这条路是为你而存在的。

哇,谢谢你,这真的帮了我一臂之力。你能不能多说一点为什么它会起作用,这样我就能更好地理解引擎盖下发生了什么?很好。这显然是正确的做法。谢谢分享。