23
votes

I'm trying to push my app to heroku but am getting this message.

Gem::LoadError: Specified 'sqlite3' for database adaptor, but the gem is not loaded.

But I did not. I don't have sqlite3 anywhere in my database.yml file

development:
  adapter: postgresql
  encoding: unicode
  database: blog_development
  pool: 5
  timeout: 5000
  host:  localhost

test:
  adapter: postgresql
  database: blog_test
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  database: blog_production
  pool: 5
  timeout: 5000

My adapter name is psotgresql. I even opened the file myself

cat database.yml

I searched through the file but could not find postgresql. Here is my gemfile

ruby '2.1.0'
gem 'rails', '4.1.1'

group :development, :test do
  gem 'pg', '0.17.1'
  gem 'rspec-rails', '3.0.1'
end

group :production do
  gem 'pg', '0.17.1'
  gem 'rails_12factor'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
end

gem 'sass-rails', '~> 4.0.2'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'sprockets-rails', '~> 2.1.3'
gem 'bootstrap-sass', '3.1.1.1'

gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.1.1'

group :doc do

  gem 'sdoc', require: false
end

gem 'bcrypt', '~> 3.1.7'

I have pg located in the production environment here. I have ran bundle install, bundle update, git add, git commit, and git push heroku master numerous times and I still get this message.

I don't understand this. I did NOT specify sqlite3 for my database adaptor.

I'm at a loss for words.

6
What is the output of grep sqlite -r ./ -i when executed from the root of your rails application?Max
Did you forget to run bundle update to update your Gemfile.lock file, or did you forget to commit your changes to Git before trying to push to Heroku? If so, then this question is a duplicate.user456814

6 Answers

43
votes

I had to specify my sqlite3 version as 1.3.13:

gem 'sqlite3', '~> 1.3.13'

Then run bundle update.

8
votes

I've also encountered this problem. I found out that the installed sqlite3 is version 1.4.2. To solve it, I add this code:

gem 'sqlite3', '~> 1.3.6', '< 1.4'

Below is my setup:

$ rails -v

Rails 4.2.3

$ gem env

RubyGems Environment:
– RUBYGEMS VERSION: 2.5.1
– RUBY VERSION: 2.3.0 (2015-12-25 patchlevel 0) [x86_64-linux]
– INSTALLATION DIRECTORY: /home/armano/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0
– USER INSTALLATION DIRECTORY: /home/armano/.gem/ruby/2.3.0
– RUBY EXECUTABLE: /home/armano/.rbenv/versions/2.3.0/bin/ruby
– EXECUTABLE DIRECTORY: /home/armano/.rbenv/versions/2.3.0/bin
– SPEC CACHE DIRECTORY: /home/armano/.gem/specs
– SYSTEM CONFIGURATION DIRECTORY: /home/armano/.rbenv/versions/2.3.0/etc
5
votes

It sounds like you might have either:

  1. forgot to run bundle update or bundle install to update your Gemfile.lock file, or

  2. forgot to commit your Gemfile and Gemfile.lock changes to Git with git commit before pushing to Heroku.

If your problem is the 2nd case, then this question is a duplicate, I just have to find the canonical question around somewhere...

2
votes

I had this issue.

I had manually removed "pg (0.17.1)" from Gemfile.lock in an attempt to cover my tracks after neglecting to put the '--without production' param in for bundle install. Adding back solved the issue.

1
votes

Had same issue when starting a rails 5.0 tutorial on cloud9 IDE (amazon). Default sqlite3 version installed by running {rails new} within the cloud editor was 3.7.17 2013-05-20

this solved my problem : gem 'sqlite3', '~> 1.4.0'

After this I succeeded to launch the "yay you're on rails page"

-1
votes

In test environment you not have specific DB gem. Move 'pg' gem from production and development to common.