gpt4 book ai didi

ruby-on-rails - 加载 'sqlite3' Active Record 适配器时出错。当我在 Heroku 中部署时

转载 作者:行者123 更新时间:2023-12-02 19:42:25 24 4
gpt4 key购买 nike

我在 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 一起工作?

这是我的 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 之间存在许多小的不兼容性,您不想在将应用程序投入生产时发现它们。

1。在本地系统上安装 Postgres。

如何执行此操作取决于您的系统。 OS-X 和 Windows 有简单的安装程序。在 Linux 上,您可以通过包管理器安装它。

2。删除 sqlite gem。

# remove
gem 'sqlite3', '~> 1.3.6'

# add
gem 'pg', '~> 0.18.4' # check rubygems.org for the latest version

运行 bundle update 重新生成 Bundle.lock

3。配置database.yml

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.

4。提交并推送

关于ruby-on-rails - 加载 'sqlite3' Active Record 适配器时出错。当我在 Heroku 中部署时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59901798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com