加载"sqlite3" Active Record适配器时出错.当我在Heroku中部署时 [英] Error loading the 'sqlite3' Active Record adapter. when I deploy in Heroku
问题描述
在Heroku中进行部署时遇到问题:
I have a problem when I am deploying in Heroku:
/app/vendor/bundle/ruby/2.6.0/gems/bundler-1.17.3/lib/bundler/rubygems_integration.rb:408:in `block (2 levels) in replace_gem': Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? sqlite3 is not part of the bundle. Add it to your Gemfile. (LoadError)
我尝试遵循必须降级SQLite3的指南,但无法正常工作,我还阅读了必须使用Rails 5.2的解决方案,但我现在的水平是6.0.是否可以使其与Rails 6一起使用?
I tried to follow guides where I have to downgrade SQLite3, but is not working, also I read solutions where I have to use Rails 5.2, but I am at 6.0 right now. Is there a possiblity to make it work with Rails 6?
这是我的Gemfile:
This is my Gemfile:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.6.3'
gem 'rails', '6.0.1'
gem 'autoprefixer-rails', '9.6.1.1'
gem 'uglifier', '3.2.0'
gem 'coffee-rails', '5.0.0'
gem 'jquery-rails', '4.3.5'
gem 'mini_magick', '4.9.5'
gem 'will_paginate', '3.2.1'
gem 'bootstrap-will_paginate', '1.0.0'
gem 'bootstrap-sass', '3.4.1'
gem 'puma', '4.3.1'
gem 'font-awesome-rails', '4.7.0.5'
gem 'sass-rails', '6'
gem 'webpacker', '4.0'
gem 'turbolinks', '5'
gem 'jbuilder', '2.9.1'
gem 'rubocop', '0.77.0'
gem 'bootsnap', '1.4.2', require: false
group :development, :test do
gem 'sqlite3', '~> 1.3.6'
gem 'byebug', platforms: %i[mri mingw x64_mingw]
end
group :development do
gem 'web-console', '3.3.0'
gem 'listen', '3.2.0'
gem 'spring'
gem 'spring-watcher-listen', '2.0.0'
end
group :test do
gem 'capybara', '3.28.0'
gem 'selenium-webdriver', '3.142.4'
gem 'webdrivers', '4.1.2'
end
group :production do
gem 'pg', '0.20.0'
# gem 'fog', '1.42'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
这是我的database.yml
:
# SQLite. Versions 3.8.0 and up are supported.
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
# 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:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
推荐答案
您应该从应用程序中删除SQLite,并在开发,测试和生产中使用Postgres. RDBMS之间存在许多小的不兼容性,并且当您将应用程序推入生产环境时,您不想发现它们.
You should remove SQLite from your application and use Postgres in development, testing and production. There are many small incompatibilities between RDBMS's and you don't want to discover them when you push your app to production.
如何执行此操作取决于您的系统. OS-X和Windows具有简单的安装程序.在Linux上,您可以通过包管理器进行安装.
How to do this depends on your system. OS-X and Windows have simple installers. On Linux you would install it through your package manager.
# remove
gem 'sqlite3', '~> 1.3.6'
# add
gem 'pg', '~> 0.18.4' # check rubygems.org for the latest version
运行bundle update
以重新生成Bundle.lock
.
default: &default
adapter: postgresql
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: 'my_app_development'
# 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:
<<: *default
database: 'my_app_test'
# On Heroku you don't need the production section as it provides everything through
# ENV["DATABASE_URL"]
# Heroku sets pretty good defaults as well so YAGNI.
这篇关于加载"sqlite3" Active Record适配器时出错.当我在Heroku中部署时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!