简体   繁体   中英

“Failed to install gems via Bundler” when deploying to Heroku

Background: I'm working through the book "Ruby on Rails 3 Tutorial" by Michael Hartl. I've gotten to the point where I'm setting up heroku. The text directs me to use sqlite3, but it seems that heroku no longer allows a sqlite3 backend. So, I'm trying to use postgres instead.

I'm working on a Mac, OS 10.6.8.

Problem: I try to do

$ git push heroku master

Then I get

Counting objects: 69, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (55/55), done.
Writing objects: 100% (69/69), 26.69 KiB, done.
Total 69 (delta 5), reused 0 (delta 0)

-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.2.0.rc.2
       Running: bundle install --without development:test --path vendor/bundle --    binstubs bin/ --deployment
       You are trying to install in deployment mode after changing
       your Gemfile. Run `bundle install` elsewhere and add the
       updated Gemfile.lock to version control.
       You have added to the Gemfile:
       * pg
       You have deleted from the Gemfile:
       * sqlite3
 !
 !     Failed to install gems via Bundler.
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

With respect to "Run 'bundle install' elsewhere" -- what does elsewhere mean in this case? In another directory? I've tried that, to no avail. Also there's no Gemfile.lock file to add. In summary: I'm confused.

======

In response to hgmnz:

$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Enter your password to install the bundled RubyGems to your system: 
( --- edited out ---)
Installing pg (0.14.0) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb 
checking for pg_config... yes
Using config values from /sw/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.

Provided configuration options:
( -- edited out --- )


Gem files will remain installed in /Users/adamshaw/.bundler/tmp/14373/gems/pg-0.14.0 for   inspection.
Results logged to /Users/adamshaw/.bundler/tmp/14373/gems/pg-0.14.0/ext/gem_make.out
An error occured while installing pg (0.14.0), and Bundler cannot continue.
Make sure that `gem install pg -v '0.14.0'` succeeds before bundling.

Then

$ sudo gem install pg -v '0.14.0'

Then

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

        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /sw/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.

Provided configuration options:
( --- edited out --- )

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.14.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.14.0/ext/gem_make.out

Hmm, that seems to indicate that you've modified your Gemfile to include the pg gem, but haven't run bundle install (on your dev machine) to lock those gems down. Running bundle install will resolve all gem dependencies and generate a new Gemfile.lock . That's the file you should check into git and then attempt the deploy.

Run the following on your development machine:

bundle install
git add Gemfile.lock
git commit -m "Locking gems"
git push heroku # assumes default remote named heroku

You need to let the gem installer know where your PostgreSQL installation is located, because it needs to use some of those files when installing.

Check out Error installing pg gem on osx

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM