我对ruby/gem管理和postgres libpq有问题

我对ruby/gem管理和postgres libpq有问题,ruby,postgresql,ruby-on-rails-4,bundler,pg,Ruby,Postgresql,Ruby On Rails 4,Bundler,Pg,我已经从RVM切换到rbenv,现在使用chruby。我确保RVM和rbenv已完全卸载。我正在使用ruby 2.2.5。我在安装捆绑包时遇到问题: 安装带有本机扩展的第0.18.4页 Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby ex

我已经从RVM切换到rbenv,现在使用chruby。我确保RVM和rbenv已完全卸载。我正在使用ruby 2.2.5。我在安装捆绑包时遇到问题:

安装带有本机扩展的第0.18.4页

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
我有一个关于如何管理我的红宝石的问题。我注意到bundler正在系统文件(Ruby.framework/Versions/2.0)中查找gems,但我使用的是Ruby 2.2.5。我还注意到gem文件安装在ruby/2.2.5/ruby/2.0.0/gems--(请参阅下面的代码)中--

这是我的宝石环境:

ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-darwin14]
~/w/Rafftopia ❯❯❯ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.5.1
  - RUBY VERSION: 2.2.5 (2016-04-26 patchlevel 319) [x86_64-darwin14]
  - INSTALLATION DIRECTORY: /Users/phillipjones/.gem/ruby/2.2.5
  - RUBY EXECUTABLE: /Users/phillipjones/.rubies/ruby-2.2.5/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/phillipjones/.gem/ruby/2.2.5/bin
  - SPEC CACHE DIRECTORY: /Users/phillipjones/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/phillipjones/.rubies/ruby-2.2.5/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-14
  - GEM PATHS:
     - /Users/phillipjones/.gem/ruby/2.2.5
     - /Users/phillipjones/.rubies/ruby-2.2.5/lib/ruby/gems/2.2.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/phillipjones/.gem/ruby/2.2.5/bin
     - /Users/phillipjones/.rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/bin
     - /Users/phillipjones/.rubies/ruby-2.2.5/bin
     - /usr/local/bin
     - /usr/local/sbin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin

我尝试了许多建议来解决这个问题,但都无济于事。任何帮助都将不胜感激

pggem包含一个Ruby解释器的扩展,用C编写。安装gem时,该扩展是用系统上安装的C编译器编译的。当您启动应用程序并连接到PostgreSQL server时,此扩展将作为Ruby的一部分加载和执行

但是,扩展需要编译PostgeSQL库和C头文件。Bundler找不到它们,也无法编译扩展

您需要告诉Bundler在哪里可以找到用于编译
pg
扩展的库。它可以从
pg_config
程序中获取此信息,因此您需要告诉它在哪里可以找到
pg_config
。假设您运行的是最新的PostgreSQL版本:

bundle config build.pg -- --with-pgconfig=/usr/local/Cellar/postgresql/9.5.3/bin/pg_config
运行此命令,然后再次执行捆绑安装。它应该会起作用


当您使用任何Ruby版本管理器时,您不应该再从
Ruby.framework/Versions/2.0
使用系统Ruby。Ruby版本管理器应该这样做:当您运行
Ruby
时,您正在运行您选择的自定义版本。

pggem包含一个Ruby解释器的扩展,用C编写。当您安装gem时,该扩展是用系统上安装的C编译器编译的。当您启动应用程序并连接到PostgreSQL server时,此扩展将作为Ruby的一部分加载和执行

但是,扩展需要编译PostgeSQL库和C头文件。Bundler找不到它们,也无法编译扩展

您需要告诉Bundler在哪里可以找到用于编译
pg
扩展的库。它可以从
pg_config
程序中获取此信息,因此您需要告诉它在哪里可以找到
pg_config
。假设您运行的是最新的PostgreSQL版本:

bundle config build.pg -- --with-pgconfig=/usr/local/Cellar/postgresql/9.5.3/bin/pg_config
运行此命令,然后再次执行捆绑安装。它应该会起作用


当您使用任何Ruby版本管理器时,您不应该再从
Ruby.framework/Versions/2.0
使用系统Ruby。Ruby版本管理器应该这样做:当您运行
Ruby
时,您运行的是您选择的自定义版本。

我的Ruby-v是2.2.1,但当我捆绑安装时,它会显示我的系统Ruby。~/w/raftopia❯❯❯ ruby-v ruby 2.2.1p85(2015-02-26修订版49769)[x86_64-darwin14]~/w/Raftopia❯❯❯ bundle install/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:296:在“to_specs”中:在总共8个gem中找不到“bundler”(>=0)(gem::LoadError)/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:307:int这并没有解决我的问题,但感谢您的建议。此消息:
在总共8个gem中找不到“bundler”(>=0)
意味着您没有在Ruby 2.2.1目录中安装bundler gem。运行
gem-install bundler
即可。我的ruby-v显示为2.2.1,但当我进行bundle-install时,它会显示我的系统ruby。~/w/raftopia❯❯❯ ruby-v ruby 2.2.1p85(2015-02-26修订版49769)[x86_64-darwin14]~/w/Raftopia❯❯❯ bundle install/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:296:在“to_specs”中:在总共8个gem中找不到“bundler”(>=0)(gem::LoadError)/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:307:int这并没有解决我的问题,但感谢您的建议。此消息:
在总共8个gem中找不到“bundler”(>=0)
意味着您没有在Ruby 2.2.1目录中安装bundler gem。运行
gem安装bundler
即可完成此操作。