ruby-on-rails - 从 Rails 4 升级到 6:未初始化的常量 ActiveRecord::ConnectionAdapters::SchemaCache
问题描述
我将一个相当旧的应用程序从 rails 4.2 升级到了 6.1.3.1。该应用程序在本地运行良好,但是当我尝试使用 capistrano 将其部署到我的服务器时,出现以下错误。它指出
NameError: uninitialized constant ActiveRecord::ConnectionAdapters::SchemaCache
** Did you mean? ActiveRecord::Schema
在运行 bundle exec rake assets:precompile 时会发生这种情况,无论是通过 capistrano 还是在服务器上手动进行。我尝试在 application.rb 中设置一些标志,例如:
config.assets.initialize_on_precompile = false
但是,这并没有解决问题。我觉得我已经用尽了我的知识和搜索技能。有人可以帮我指出正确的方向吗?
* executing "cd -- /home/user/app_rails6/releases/20210419123208 && RAILS_ENV=staging RAILS_GROUPS=assets bundle exec rake assets:precompile"
* executing command
** rake aborted!
** NameError: uninitialized constant ActiveRecord::ConnectionAdapters::SchemaCache
** Did you mean? ActiveRecord::Schema
**
** /home/user/app_rails6/shared/bundle/ruby/2.6.0/gems/activerecord-6.1.3.1/lib/active_record/railtie.rb:139:in `block (3 levels) in <class:Railtie>'
**
** /home/user/app_rails6/shared/bundle/ruby/2.6.0/gems/activesupport-6.1.3.1/lib/active_support/lazy_load_hooks.rb:71:in `class_eval'
**
** /home/user/app_rails6/shared/bundle/ruby/2.6.0/gems/activesupport-6.1.3.1/lib/active_support/lazy_load_hooks.rb:71:in `block in execute_hook'
** /home/user/app_rails6/shared/bundle/ruby/2.6.0/gems/activesupport-6.1.3.1/lib/active_support/lazy_load_hooks.rb:61:in `with_execution_control'
------trace truncated by author------
更新:
更新:当我使用使用 sqlite 作为数据库的环境时,命令运行良好。当我使用使用 postgres 作为数据库的环境时,我得到了错误。
解决方案
原来在 Rails 中有一个错误,现在已在 6.1.3.1(6-1-stable 分支)上修复。
我仍然遇到稍微不同的错误,但这个问题已经解决。
推荐阅读
- oracle - 错误:PLS-00201:必须在包中声明标识符“AST”
- schema.org - 谷歌识别的 JSON LD 格式的 Schema.org,但 Facebook 像素助手未检测到它
- sql-server - SQL Server 2012 创建具有表创建约束的唯一索引
- c# - 在 asp.net core 中手动调用控制器的操作
- dependency-injection - 使用 Jersey 测试框架进行 JUnit 测试中的 CDI
- linux - 在主管运行的 bash 脚本中无法访问 Linux 环境变量
- android - 单击按钮返回时导航路由不起作用。本机脚本
- javascript - Chrome 预览版如何编码/解码原始 (application/x-pkcs12) 类型的实际响应?
- apache-kafka - kafka:具有不同avro文件的生产者和消费者
- twitter-bootstrap - 早午餐 + 少 + 引导