使用Sqlite3部署RoR应用程序到Heroku失败

我正在尝试将我的第一个应用程序部署到Heroku。 我使用Sqlite作为数据库。 据我所知Heroku不使用Sqlite – 它在后台切换到Postgres。

当我部署时,我得到以下错误:

/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)

我的gemfile(这是我认为是造成这个问题)看起来如下所示:

source 'http://rubygems.org' gem 'rails', '3.0.0' gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3' 

我究竟做错了什么?

Heroku不支持SQLite数据库。 您需要在生产中使用PostgreSQL,正如我在本文中所解释的 。

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

实际上,build议尽可能使用开发/testing环境来生产。 因此,我build议你将所有的环境切换到PostgreSQL。

 # replace gem "sqlite3" with gem "pg" 

Simone Carletti是正确的,Joost也是如此。 你只需要将sqlite3 gem分组或者从你的Gemfile中完全删除它。 Heroku只需要知道你不想使用sqlite3进行生产

所以这:

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

或这个:

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

如果你完全删除引用,你可能会搞砸你的本地数据库

我在这里呆了几个小时,看看这里的每一个答案,但是我没有得到足够的细节使它们一起来。 这个页面走过了所有的东西。 http://railsapps.github.io/rails-heroku-tutorial.html

祝你好运。

在对付这个问题之后,我意识到自己正在把我的repo 分支推向heroku,而在我的repo的deploy-postgres分支中完成所有postgres的更改!

我将我的部署postgres分支与我的本地主[ git checkout master; git merge deploy-postgres git checkout master; git merge deploy-postgres ],然后按照heroku文档运行git push heroku master

你可以使用clearDB插件

gem 'mysql2'而不是gem 'sqlite3'

我正在使用sqlite3并部署到Heroku没有问题。 这是我的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