Reputation: 1
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
Upvotes: 0
Views: 4034
Reputation: 6062
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
Upvotes: 1
Reputation: 13306
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
Upvotes: 5