使用SQLite 3将RoR应用程序部署到Heroku失败

时间:2010-10-09 18:54:20

标签: ruby-on-rails heroku deployment sqlite

我正在尝试将我的第一个应用程序部署到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':没有这样的文件加载 -   sqlite3(LoadError)

我的Gemfile(我认为是导致此问题的原因)如下所示:

source 'http://rubygems.org'

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

我做错了什么?

7 个答案:

答案 0 :(得分:53)

Heroku不支持SQLite数据库。您需要在生产中使用PostgreSQL,如I also explained in this post

group :production do
  gem "pg"
end

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

实际上,建议在开发/测试环境中使用尽可能接近生产的环境。因此,我建议您将所有环境切换到PostgreSQL。

# replace gem "sqlite3" with
gem "pg"

答案 1 :(得分:4)

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
...

如果完全删除引用,则可能会破坏本地数据库

答案 2 :(得分:0)

我在这里坚持了几个小时看这里的每一个答案,但我无法得到足够的细节让它融合在一起。这个分页让我了解了一切。 http://railsapps.github.io/rails-heroku-tutorial.html

祝你好运。

答案 3 :(得分:0)

在我遇到这个问题之后,我意识到我正在将我的repo的 master 分支推送到heroku,而我在 deploy-postgres <中进行了所有postgres更改/ em>我的回购分支!

我将 deploy-postgres 分支与我的本地主[[{1}}]合并,然后根据heroku文档运行git checkout master; git merge deploy-postgres

答案 4 :(得分:0)

我面临着类似的问题,但是我意识到自己在另一个分支上-6.11.3,并且正在推new_layout。 因此,我使用以下命令将所需的分支推送至heroku,一切正常。

master

答案 5 :(得分:-2)

您可以使用clearDB addon

gem 'mysql2'代替gem 'sqlite3'

答案 6 :(得分:-5)

我正在使用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