Jaco Pretorius
Jaco Pretorius

Reputation: 24830

Deploying RoR app to Heroku with SQLite 3 fails

I'm trying to deploy my first app to Heroku. I'm using SQLite as the database. As far as I know Heroku doesn't use SQLite - it switches to Postgres in the backend.

When I'm deploying I get the following error:

/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require': no such file to load -- sqlite3 (LoadError)

My Gemfile (which is what I assume is causing this problem) looks as follows:

source 'http://rubygems.org'

gem 'rails', '3.0.0'        
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'

What am I doing wrong?

Upvotes: 40

Views: 19874

Answers (7)

Milind
Milind

Reputation: 5112

i was facing similar issue, but I realized that I was on a different branch - new_layout and was pushing master. So I pushed my desired branch to heroku using following command and everything worked fine.

git push heroku new_layout:master 

Upvotes: 0

duhaime
duhaime

Reputation: 27611

After banging my head against this problem, I realized I was pushing the master branch of my repo to heroku, while I was making all of my postgres changes in my deploy-postgres branch of my repo!

I merged my deploy-postgres branch with my local master [git checkout master; git merge deploy-postgres] and then could run git push heroku master as per the heroku documentation.

Upvotes: 1

Simone Carletti
Simone Carletti

Reputation: 176552

Heroku doesn't support SQLite databases. You need to use PostgreSQL on production, as I also explained in this post.

group :production do
  gem "pg"
end

group :development, :test do
  gem "sqlite3", "~> 1.3.0"
end

Actually, it's recommended to use in development/test an environment as close as possible to production. Therefore, I suggest you to switch all your environments to PostgreSQL.

# replace gem "sqlite3" with
gem "pg"

Upvotes: 53

Katya
Katya

Reputation: 138

You can use clearDB addon

and gem 'mysql2' instead of gem 'sqlite3'

Upvotes: -2

Sangaku
Sangaku

Reputation: 95

I was stuck on this for hours looking at every answer here, but I couldn't get enough details to make it come together. This paged walked me through everything. http://railsapps.github.io/rails-heroku-tutorial.html

Good luck.

Upvotes: 0

user471634
user471634

Reputation: 1

I'm using sqlite3 and deploy to Heroku no problem. Here is my database.yml

# SQLite version 3.x
#   gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

Upvotes: -5

hoitomt
hoitomt

Reputation: 41

Simone Carletti is correct and so is Joost. You only need to group the sqlite3 gem or remove it entirely from your Gemfile. Heroku just needs to know that you don't want to use sqlite3 for production

So this:

...
group :development, :test do
  gem "sqlite3-ruby", "~> 1.3.0", :require => "sqlite3"
end
...

Or this:

...
#No reference to sqlite3-ruby
...

If you remove the reference entirely you will probably mess up your local db though

Upvotes: 4

Related Questions