从 Rails 4 升级到 6:未初始化的常量 ActiveRecord::ConnectionAdapters::SchemaCache

时间:2021-04-19 14:14:25

标签: ruby-on-rails ruby-on-rails-6

我将一个相当旧的应用程序从 rails 4.2 升级到 6.1.3.1。该应用程序在本地运行良好,但是当我尝试使用 capistrano 将其部署到我的服务器时,出现以下错误。它指出

NameError: uninitialized constant ActiveRecord::ConnectionAdapters::SchemaCache 
     ** Did you mean?  ActiveRecord::Schema

在通过 capistrano 或在服务器上手动运行 bundle exec rake assets:precompile 时会发生这种情况。我试过在 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 作为数据库的环境时,出现错误。

1 个答案:

答案 0 :(得分:0)

原来在 Rails 中存在一个错误,现在已在 6.1.3.1(6-1-stable 分支)上修复。

我仍然遇到一个稍微不同的错误,但这个问题已经解决。

相关问题