从 2.8.0.beta1 升级到 beta4 在数据库迁移时失败?

嘿,

我正在运行 launcher rebuild 以从 2.8.0.beta1 升级到 beta4。

我已禁用所有非官方插件,但看来问题出在核心部分。

用于简单单容器构建的 app.yaml 如下:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/cloudflare.template.yml"

构建日志:

I, [2021-08-04T16:28:25.000925 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
NOTE: nokogumbo: 使用 Nokogiri 提供的 Nokogiri::HTML5。更多信息请参见 https://github.com/sparklemotion/nokogiri/issues/2205。
rake aborted!
NoMethodError: 未定义方法 `client_setting' for #<Class:0x0000560ce241d530>
Did you mean?  client_settings
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:299:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:360:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:526:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment

看起来又是一次数据库迁移问题?

(通过运行带有 --trace 的任务查看完整跟踪)
I, [2021-08-04T16:28:27.237146 #1]  INFO -- : 
I, [2021-08-04T16:28:27.237451 #1]  INFO -- : 终止异步进程
I, [2021-08-04T16:28:27.237485 #1]  INFO -- : 向 HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 57 发送 INT 信号
I, [2021-08-04T16:28:27.237508 #1]  INFO -- : 向 exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 174 发送 TERM 信号
2021-08-04 16:28:27.237 UTC [57] LOG:  收到快速关闭请求
174:signal-handler (1628094507) 收到 SIGTERM,计划关闭...
2021-08-04 16:28:27.238 UTC [57] LOG:  中止任何活动事务
2021-08-04 16:28:27.240 UTC [57] LOG:  后台工作进程 "logical replication launcher" (PID 66) 以退出代码 1 退出
2021-08-04 16:28:27.241 UTC [61] LOG:  正在关闭
174:M 04 Aug 2021 16:28:27.263 # 用户请求关闭...
174:M 04 Aug 2021 16:28:27.263 * 退出前保存最终 RDB 快照。
174:M 04 Aug 2021 16:28:27.306 * 数据库已保存到磁盘
174:M 04 Aug 2021 16:28:27.306 # Redis 现在准备退出,再见...
2021-08-04 16:28:27.311 UTC [57] LOG:  数据库系统已关闭


失败
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' 执行失败,返回状态为 #<Process::Status: pid 3928 exit 1>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
执行失败,参数如下:{"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
094fab4de06ec9e94ef5e3be53e68870df6add7eb7991dfe037198cf52de764f
** 启动失败 ** 请向上滚动并查找更早的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。

Discourse 日常检查一切正常,但无法构建。

欢迎提供任何帮助!

此致,
Marius

你能在那段回溯之前再贴几行吗?

好的。

1:  rails_multisite (3.0.0) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/rails_multisite-3.0.0.gemspec
正在使用 discourse-ember-rails 0.18.6
1:  discourse-ember-rails (0.18.6) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/discourse-ember-rails-0.18.6.gemspec
3:  nio4r (2.5.8) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/nio4r-2.5.8.gemspec
正在获取 puma 5.4.0
正在安装 puma 5.4.0(含原生扩展)
正在构建原生扩展。这可能需要一些时间...
1:  puma (5.4.0) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/puma-5.4.0.gemspec
0:  oj (3.12.3) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/oj-3.12.3.gemspec
2:  ffi (1.15.3) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/ffi-1.15.3.gemspec
正在使用 mini_suffix 0.3.2
3:  mini_suffix (0.3.2) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/mini_suffix-0.3.2.gemspec
正在使用 rbtrace 0.4.14
3:  rbtrace (0.4.14) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/rbtrace-0.4.14.gemspec
正在使用 sassc 2.0.1
3:  sassc (2.0.1) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/sassc-2.0.1.gemspec
正在使用 sassc-rails 2.1.2
2:  sassc-rails (2.1.2) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/sassc-rails-2.1.2.gemspec
Bundle 完成!共 126 个 Gemfile 依赖项,现已安装 172 个 gem。
未安装 'test' 和 'development' 组中的 gem。
Bundled gems 已安装到 `./vendor/bundle`
来自 rubyzip 的发布后消息:
RubyZip 3.0 即将到来!
**********************

部分 Rubyzip 类的公共 API 已现代化,以使用命名参数作为可选参数。请检查您对以下类的使用情况:
  * `Zip::File`
  * `Zip::Entry`
  * `Zip::InputStream`
  * `Zip::OutputStream`

请确保您的 Gemfiles 和 .gemspecs 具有适当的限制性,以避免在 3.0 版本发布时出现意外中断(例如 ~\u003e 2.3.0)。
详细信息请参阅 https://github.com/rubyzip/rubyzip。变更日志还列出了自 2.3.0 版本以来实施的其他增强功能和错误修复。

I, [2021-08-04T17:23:05.372537 #1]  INFO -- : \u003e cd /var/www/discourse \u0026\u0026 su discourse -c 'bundle exec rake plugin:pull_compatible_all'
注意:nokogumbo:正在使用 Nokogiri 提供的 Nokogiri::HTML5。更多信息请参阅 https://github.com/sparklemotion/nokogiri/issues/2205。


I, [2021-08-04T17:23:07.700176 #1]  INFO -- : \u003e cd /var/www/discourse \u0026\u0026 su discourse -c 'bundle exec rake db:migrate'
注意:nokogumbo:正在使用 Nokogiri 提供的 Nokogiri::HTML5。更多信息请参阅 https://github.com/sparklemotion/nokogiri/issues/2205。
rake 中止!
NoMethodError: #\u003cClass:0x000055fa73b18780\u003e 中未定义方法 `client_setting'
您是否指的是?client_settings
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
/var/www/discourse/plugins/discourse-tagging/plugin.rb:13:in `block in activate!'
/var/www/discourse/lib/plugin/instance.rb:447:in `block in notify_after_initialize'
/var/www/discourse/lib/plugin/instance.rb:445:in `each'
/var/www/discourse/lib/plugin/instance.rb:445:in `notify_after_initialize'
/var/www/discourse/config/application.rb:351:in `each'
/var/www/discourse/config/application.rb:351:in `block (2 levels) in \u003cclass:Application\u003e'
/var/www/discourse/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/var/www/discourse/config/application.rb:350:in `block in \u003cclass:Application\u003e'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:68:in `block in execute_hook'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:61:in `with_execution_control'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:66:in `execute_hook'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:52:in `block in run_load_hooks'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:51:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:51:in `run_load_hooks'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application/finisher.rb:140:in `block in \u003cmodule:Finisher\u003e'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/initializable.rb:32:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/initializable.rb:32:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/initializable.rb:61:in `block in run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/initializable.rb:60:in `run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:384:in `initialize!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/railtie.rb:207:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/railtie.rb:207:in `method_missing'
/var/www/discourse/config/environment.rb:7:in `\u003cmain\u003e'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:299:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:360:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:526:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `\u003ctop (required)\u003e'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `\u003cmain\u003e'
任务:TOP =\u003e db:migrate =\u003e db:load_config =\u003e environment
(通过运行带有 --trace 的任务查看完整堆栈跟踪)
I, [2021-08-04T17:23:11.177809 #1]  INFO -- : 
I, [2021-08-04T17:23:11.178039 #1]  INFO -- : 终止异步进程
I, [2021-08-04T17:23:11.178063 #1]  INFO -- : 向 HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 55 发送 INT
I, [2021-08-04T17:23:11.178098 #1]  INFO -- : 向 exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 172 发送 TERM
172:signal-handler (1628097791) 收到 SIGTERM,正在调度关闭...
2021-08-04 17:23:11.178 UTC [55] LOG:  收到快速关闭请求
2021-08-04 17:23:11.179 UTC [55] LOG:  中止任何活跃事务
2021-08-04 17:23:11.180 UTC [55] LOG:  后台进程 "logical replication launcher" (PID 64) 以退出代码 1 退出
2021-08-04 17:23:11.181 UTC [59] LOG:  正在关闭
2021-08-04 17:23:11.251 UTC [55] LOG:  数据库系统已关闭
172:M 04 Aug 2021 17:23:11.264 # 用户请求关闭...
172:M 04 Aug 2021 17:23:11.264 * 正在保存退出前的最终 RDB 快照。
172:M 04 Aug 2021 17:23:11.300 * 数据库已保存到磁盘
172:M 04 Aug 2021 17:23:11.300 # Redis 现已准备好退出,再见...


失败
--------------------
Pups::ExecError: cd /var/www/discourse \u0026\u0026 su discourse -c 'bundle exec rake db:migrate' 失败,返回 #\u003cProcess::Status: pid 4010 exit 1\u003e
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
执行失败,参数为 {"cd"=\u003e"$home", "hook"=\u003e"db_migrate", "cmd"=\u003e["su discourse -c 'bundle exec rake db:migrate'"]}
9a5092784c9c0a57bcd02f5750638b9f565840ca4c6afa3346860ff01ac3ab5d
** 引导失败 ** 请向上滚动并查找更早的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。

该插件已于 2016 年弃用::scream:。请从 app.yml 中将其移除并重新构建。

哦哦 :innocent:

问题解决了。那部分可是“请勿触碰”的区域 :slight_smile: