安装pg(0.18.2)时发生错误,Bundler无法继续

继Tony Coconate的Rails + Ember.js(使用Ember CLI)教程之后,我们正在尝试创建一个新的Rails API。

当我们运行rails new api -T -d postgresql ,我们收到以下错误消息:

 An error occurred while installing pg (0.18.2), and Bundler cannot continue. Make sure that `gem install pg -v '0.18.2'` succeeds before bundling. 

这就是Gemfile文件的样子:

 source "https://rubygems.org" gem "rails", "4.2.1" gem "activeadmin", github: "gregbell/active_admin" # Until it"s 1.0.0 gem "coffee-rails", "~> 4.0.0" gem "devise" gem "grape" gem "grape-active_model_serializers" gem "grape-swagger-rails" gem "jquery-rails" gem "pg" gem "rack-cors", require: "rack/cors" gem "sass-rails", "~> 4.0.3" gem "uglifier", ">= 1.3.0" group :development do gem "better_errors" gem "meta_request" gem "quiet_assets" gem "spring" end group :development, :test do gem "capybara" gem "capybara-screenshot" gem "database_cleaner" gem "factory_girl_rails" gem "faker" gem "poltergeist" gem "pry-nav" gem "pry-rails" gem "pry-stack_explorer" gem "pry-theme" gem "rspec-rails" gem "rubocop" gem "shoulda-matchers" gem "spring-commands-rspec" end 

当我们运行bundle install ,我们收到以下错误消息:

 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/user_name/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150629-73521-9m0ocx.rb extconf.rb checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** 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. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/user_name/.rvm/rubies/ruby-2.2.1/bin/$(RUBY_BASE_NAME) --with-pg --without-pg --enable-windows-cross --disable-windows-cross --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/lib extconf failed, exit code 1 Gem files will remain installed in /Users/user_name/.rvm/gems/ruby-2.2.1/gems/pg-0.18.2 for inspection. Results logged to /Users/user_name/.rvm/gems/ruby-2.2.1/extensions/x86_64-darwin-14/2.2.0-static/pg-0.18.2/gem_make.out An error occurred while installing pg (0.18.2), and Bundler cannot continue. Make sure that `gem install pg -v '0.18.2'` succeeds before bundling. 

当我们运行gem install pg -v '0.18.2' ,我们也会收到错误:

 Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension. /Users/user_name/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150629-73553-uaymt5.rb extconf.rb checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** 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. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/user_name/.rvm/rubies/ruby-2.2.1/bin/$(RUBY_BASE_NAME) --with-pg --without-pg --enable-windows-cross --disable-windows-cross --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/lib extconf failed, exit code 1 Gem files will remain installed in /Users/user_name/.rvm/gems/ruby-2.2.1/gems/pg-0.18.2 for inspection. Results logged to /Users/user_name/.rvm/gems/ruby-2.2.1/extensions/x86_64-darwin-14/2.2.0-static/pg-0.18.2/gem_make.out 

知道什么是错的,最重要的是,我们如何解决它?

好的,所以我找到了解决问题的方法。

首先,我用自制软件安装了pg gem, 如下所述 :

 brew install postgres 

然后,我无法启动rails服务器,所以我按照这个解决方案运行:

 pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 

现在,一切正常。

这是一个错误,表明bundler无法访问psql二进制文件

您可以按照其他答案中的建议安装postgresql 。 但是,如果您使用的是http://postgresapp.com/中的Postgres.app ,那么您只需通过在~/.bash_profile文件中添加以下行来设置$PATH

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

更多信息: http : //postgresapp.com/documentation/cli-tools.html