1
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.3.0.pre.5
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/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
       * sqlite3
       You have deleted from the Gemfile:
       * sqlite3 (= 1.3.6)
 !
 !     Failed to install gems via Bundler.
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

This is the problem I am getting even after fixing my Gemfile with the updates suggested in this answer

HEROKU - cannot run git push heroku master

Even after adding the Gemfile.lock as mentioned ! I am getting this set of errors. It's failing when trying to compile sqlite3.

Installing sqlite3 (1.3.7)
       Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
       /usr/local/bin/ruby extconf.rb
       checking for sqlite3.h... no
       sqlite3.h is missing. Try 'port install sqlite3 +universal'
       or 'yum install sqlite-devel' and check your shared library search path (the
       location where your sqlite3 shared library is located).
       *** 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=/usr/local/bin/ruby
       --with-sqlite3-dir
       --without-sqlite3-dir
       --with-sqlite3-include
       --without-sqlite3-include=${sqlite3-dir}/include
       --with-sqlite3-lib
       --without-sqlite3-lib=${sqlite3-dir}/lib
       --enable-local
       --disable-local
       Gem files will remain installed in /tmp/build_1u9pbycs3fav1/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.7 for inspection.
       Results logged to /tmp/build_1u9pbycs3fav1/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.7/ext/sqlite3/gem_make.out
       An error occurred while installing sqlite3 (1.3.7), and Bundler cannot continue.
       Make sure that `gem install sqlite3 -v '1.3.7'` succeeds before bundling.
 !
 !     Failed to install gems via Bundler.
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

I am guessing I might have to change some dependencies ? or what should I do , I have never done it before . !

Community
  • 1
  • 1
seth
  • 23
  • 4

1 Answers1

2

Like I have written here:

Heroku doesn't support sqlite databases. You need to use postgres in production. In rails, switching databases is easy:

group :production do
  gem "pg"
end

group :development, :test do
  gem "sqlite3"
end

Change your gemfile like above, then run bundle, and commit your changes to Gemfile and Gemfile.lock. Then, run git push heroku master again.

This will let you use sqlite locally in your development and test environment, and postgres as required on heroku.

By the way, one of the principal beauties of rails is that it lets you switch databases so easily. In other frameworks, doing just this could cost you hours.

Community
  • 1
  • 1
Dennis Hackethal
  • 13,662
  • 12
  • 66
  • 115