“运行rspec时,无法在任何源中找到pg-0.12.2”

时间:2013-04-04 04:52:14

标签: ruby-on-rails postgresql gem pg

我正在使用Hartl的Rails教程构建twitter克隆应用程序。我克隆了我的git repo(https://github.com/stewartmccoy/rails_tutorial)并将代码放到我以前在我的工作计算机上的个人计算机上。因此,我的开发人员环境可能与我的Gemfile中指定的略有不同。

我的环境: Mac OS 10.6.8 Rails 3.2.13 ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-darwin10.8.0]

*本地宝石*

  • actionmailer(3.2.13,3.2.11,3.2.1)
  • actionpack(3.2.13,3.2.11,3.2.1)
  • activemodel(3.2.13,3.2.11,3.2.1)
  • activerecord(3.2.13,3.2.11,3.2.1)
  • activeresource(3.2.13,3.2.11,3.2.1)
  • activesupport(3.2.13,3.2.11,3.2.1)
  • 可寻址(2.3.2)
  • annotate(2.5.0)
  • arel(3.0.2)
  • bcrypt-ruby(3.0.1)
  • bigdecimal(1.1.0)
  • bootstrap-sass(2.1.0.0)
  • bootstrap-will_paginate(0.0.6)
  • builder(3.0.4)
  • bundler(1.3.4)
  • capybara(2.0.2,1.1.2)
  • childprocess(0.3.9,0.3.6)
  • coffee-rails(3.2.2)
  • coffee-script(2.2.0)
  • coffee-script-source(1.6.2,1.6.1,1.4.0)
  • 黄瓜(1.2.1)
  • cucumber-rails(1.2.1)
  • database_cleaner(0.7.0)
  • diff-lcs(1.2.1,1.1.3)
  • erubis(2.7.0)
  • execjs(1.4.0)
  • factory_girl(4.1.0)
  • factory_girl_rails(4.1.0)
  • faker(1.0.1)
  • ffi(1.4.0,1.3.1)
  • 小黄瓜(2.11.5)
  • hike(1.2.1)
  • i18n(0.6.1)
  • io-console(0.3)
  • 旅程(1.0.4)
  • jquery-rails(2.2.1,2.1.4,2.0.2)
  • json(1.7.7,1.7.6,1.7.5,1.5.5)
  • libwebsocket(0.1.7.1)
  • mail(2.5.3,2.4.4)
  • mime-types(1.21,1.19)
  • minitest(2.5.1)
  • multi_json(1.7.1,1.5.0)
  • nokogiri(1.5.8,1.5.7,1.5.6)
  • pg(0.14.1)
  • 多语言(0.3.3)
  • rack(1.4.5,1.4.4,1.4.1)
  • rack-cache(1.2)
  • rack-ssl(1.3.3,1.3.2)
  • rack-test(0.6.2)
  • rails(3.2.13,3.2.1)
  • railties(3.2.13,3.2.11,3.2.1)
  • rake(10.0.3,0.9.2.2)
  • rdoc(3.12.2,3.12,3.9.5)
  • rspec-core(2.13.1)
  • rspec-expectations(2.13.0)
  • rspec-mocks(2.13.0)
  • rspec-rails(2.13.0)
  • ruby​​gems-bundler(1.1.1)
  • ruby​​zip(0.9.9)
  • rvm(1.11.3.6)
  • sass(3.2.7,3.2.4)
  • sass-rails(3.2.6,3.2.5)
  • selenium-webdriver(2.31.0,2.27.2)
  • 链轮(2.2.2,2.1.3)
  • sqlite3(1.3.7)
  • thor(0.17.0,0.16.0,0.14.6)
  • 倾斜(1.3.6,1.3.3)
  • treetop(1.4.12)
  • tzinfo(0.3.37,0.3.35)
  • uglifier(1.3.0)
  • websocket(1.0.7,1.0.6)
  • will_paginate(3.0.3)
  • xpath(1.0.0,0.1.4)

我的Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.11'
gem 'bootstrap-sass', '2.1'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'
gem 'jquery-rails', '2.0.2'

group :development, :test do
  gem 'sqlite3', '1.3.5'
  gem 'rspec-rails', '2.11.0'
  # gem 'guard-rspec', '1.2.1'
  # gem 'guard-spork', '1.2.0'  
  # gem 'spork', '0.9.2'
end

group :development do
  gem 'annotate', '2.5.0'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.5'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier', '1.2.3'
end

group :test do
  gem 'capybara', '1.1.2'
  gem 'factory_girl_rails', '4.1.0'
  gem 'cucumber-rails', '1.2.1', :require => false
  gem 'database_cleaner', '0.7.0'
  # gem 'launchy', '2.1.0'
  # gem 'rb-fsevent', '0.9.1', :require => false
  # gem 'growl', '1.0.3'
end

group :production do
  gem 'pg', '0.12.2'
end

无论如何,我正试图在代码清单8.18(http://ruby.railstutorial.org/chapters/sign-in-sign-out#sec-reviewing_form_submission)之后运行测试:

$ bundle exec rspec spec/models/user_spec.rb

我收到了这个错误:

Could not find pg-0.12.2 in any of the sources
Run `bundle install` to install missing gems.

所以,我运行bundle install并收到此错误:

Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.0.3) 
Using i18n (0.6.1) 
Using multi_json (1.5.0) 
Using activesupport (3.2.11) 
Using builder (3.0.4) 
Using activemodel (3.2.11) 
Using erubis (2.7.0) 
Using journey (1.0.4) 
Using rack (1.4.4) 
Using rack-cache (1.2) 
Using rack-test (0.6.2) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.2.2) 
Using actionpack (3.2.11) 
Using mime-types (1.19) 
Using polyglot (0.3.3) 
Using treetop (1.4.12) 
Using mail (2.4.4) 
Using actionmailer (3.2.11) 
Using arel (3.0.2) 
Using tzinfo (0.3.35) 
Using activerecord (3.2.11) 
Using activeresource (3.2.11) 
Using addressable (2.3.2) 
Using annotate (2.5.0) 
Using bcrypt-ruby (3.0.1) 
Using bootstrap-sass (2.1.0.0) 
Using will_paginate (3.0.3) 
Using bootstrap-will_paginate (0.0.6) 
Using nokogiri (1.5.6) 
Using ffi (1.3.1) 
Using childprocess (0.3.6) 
Using websocket (1.0.6) 
Using libwebsocket (0.1.7.1) 
Using rubyzip (0.9.9) 
Using selenium-webdriver (2.27.2) 
Using xpath (0.1.4) 
Using capybara (1.1.2) 
Using coffee-script-source (1.4.0) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.7.6) 
Using rdoc (3.12) 
Using thor (0.16.0) 
Using railties (3.2.11) 
Using coffee-rails (3.2.2) 
Using diff-lcs (1.1.3) 
Using gherkin (2.11.5) 
Using cucumber (1.2.1) 
Using cucumber-rails (1.2.1) 
Using database_cleaner (0.7.0) 
Using factory_girl (4.1.0) 
Using factory_girl_rails (4.1.0) 
Using faker (1.0.1) 
Using jquery-rails (2.0.2) 
Installing pg (0.12.2) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/stewartmccoy/.rvm/rubies/ruby-1.9.3-p392/bin/ruby 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
    --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/stewartmccoy/.rvm/rubies/ruby-1.9.3-p392/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.12.2 for inspection.
Results logged to /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.12.2/ext/gem_make.out

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

最后,我尝试了PATH=$PATH:/Library/PostgreSQL/9.2/bin sudo gem install pg并得到了:

Password:
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /Users/stewartmccoy/.rvm/rubies/ruby-1.9.3-p392/bin/ruby 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
    --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/stewartmccoy/.rvm/rubies/ruby-1.9.3-p392/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.0 for inspection.
Results logged to /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.0/ext/gem_make.out

连连呢?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您应该检查config / database.yml上的适配器。您可能已经使用测试环境设置了postgres或pg适配器。

但是,在你的Gemfile上,你只为生产设置了postgres:

group :production do
  gem 'pg', '0.12.2'
end

如果您添加测试环境并再次运行捆绑,则应该可以:

group :test, :production do
  gem 'pg', '0.12.2'
end

另请参阅this answer的解决方案:

尝试使用以下命令安装gem:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

如果您不知道pg_config的位置,请运行以下命令:

which pg_config
顺便说一句,您是否已经在桌面上安装了postgres?您只需要安装gem的postgres开发包。