如何设置应用程序在heroku上运行?得到sqlite3错误

时间:2016-05-17 18:40:52

标签: ruby-on-rails ruby heroku

我正在尝试将我的应用推送到heroku。我在终端中收到错误说:安装sqlite3(1.3.11)时出错,而Bundler无法继续。此外,确保gem install sqlite3 -v '1.3.11'在捆绑之前成功。我一直在阅读很多关于sqlite2和pg的内容,但似乎无法弄清楚如何将它集成到我的gemfile中。谢谢。

这是我的gemfile:

source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.2'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'

  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'

由于

3 个答案:

答案 0 :(得分:4)

SQLite是一种启动项目的好方法,在本地计算机上处​​理小型数据集时效果很好。另一方面,Heroku需要比SQLite提供的更多。当使用Heroku和Rails时,他们更喜欢使用PostgreSQL。查看他们关于SQLite和PostgreSQL的文档

https://devcenter.heroku.com/articles/sqlite3

切换到PG数据库需要的工作量比原来使用它的应用程序要多一些,但这并非不可能。上面的链接有一些步骤可以帮助您将SQLite切换到PostgreSQL。

Heroku为他们的Rails集成提供了很棒的文档。如果您需要更多信息,请查看https://devcenter.heroku.com/categories/ruby

答案 1 :(得分:2)

在你的项目中使用sqlite3只是你的gemfile下面的行:

gem 'sqlite3'

使用postgres作为数据库添加:

gem 'pg'

请记得在您的系统上安装postgres软件包,如果您使用的是ubuntu,它应该是:

sudo apt-get install postgres libpq-dev

答案 2 :(得分:0)

蒂姆是对的, Heroku不支持SQLite,更喜欢使用PostgreSQL。但是,如果您已经启动了rails应用程序并准备推送到heroku,那么毫无疑问您已经开始使用SQLite,因此在尝试推送时会出现错误。目前你的Gemfile里面既没有PostgreSQL(pg)也没有SQLite(sqlite3),这可能会引起它自己的一系列问题。

要解决此问题,您可以在Gemfile中使用生产和测试分组

group :production do
  gem 'pg'
end
group :development, :test do
  gem 'sqlite3'
  gem 'byebug'
  gem 'other-gems'
end

如果您没有使用Heroku设置暂存环境,则在部署时,PostgreSQL(pg)将成为默认数据库设置。允许您继续使用您已经完成的任何操作并在生产中使用PostgreSQL。