今天我测试了创建 Teams 站点的完整备份,并将其恢复到使用 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 设置的自托管站点。测试成功。S3 已禁用,一切按预期运行。这是一个内容较少的小型测试站点。
为了实现无缝过渡,请记住一个关键步骤:确保安装所有在 Teams 站点上启用的插件。要获取该列表,请前往 Teams 站点的 /admin/plugins,然后在 meta 社区中查找指向 GitHub 上官方插件的链接。接着,将这些插件添加到新自托管站点的 app.yml 文件中。
@biyaniyash 我认为你之前遇到的问题(我们已通过邮件讨论过)是备份文件中未包含上传内容。现在你已拥有包含上传内容的正确备份文件,可用于恢复到你的自托管站点。请告诉我们恢复进展如何,以及在此过程中是否学到了什么新经验。
大家好,
快速更新:Tobias 和他的团队成功重新托管了我们的团队站点,并备份了整个网站(包括上传的文件)!
不幸的是,在自托管站点上恢复时仍然遇到错误。我也将其升级到了最新版本,但问题依旧。目前剩下的唯一步骤是安装插件(目前我尚未在自托管站点上安装任何自定义插件)。
我已请求 Tobias 和 Discourse 团队分享我团队站点的 app.yml 文件或可供复制粘贴的代码,他们目前正在协助处理此事。但也非常希望能得到任何建议,帮助让网站先运行起来,即使插件稍后再安装也可以。
恢复已失败。
以下是日志:
[2021-05-11 17:11:08] [STARTED]
[2021-05-11 17:11:08] 'biyaniyash' 已开始恢复!
[2021-05-11 17:11:08] 将恢复标记为运行中...
[2021-05-11 17:11:08] 确保 /var/www/discourse/tmp/restores/default/2021-05-11-171108 存在...
[2021-05-11 17:11:08] 正在将存档复制到临时目录...
[2021-05-11 17:11:08] 正在解压缩存档,这可能需要一些时间...
[2021-05-11 17:11:10] 正在提取转储文件...
[2021-05-11 17:11:10] 正在验证元数据...
[2021-05-11 17:11:10] 当前版本:20210420015635
[2021-05-11 17:11:10] 恢复版本:20210429154322
[2021-05-11 17:11:10] 异常:您正在尝试恢复较新版本的架构。请先进行迁移!
[2021-05-11 17:11:10] /var/www/discourse/lib/backup_restore/meta_data_handler.rb:31:in `validate'
/var/www/discourse/lib/backup_restore/restorer.rb:113:in `validate_backup_metadata'
/var/www/discourse/lib/backup_restore/restorer.rb:43:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:23:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:36:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2021-05-11 17:11:10] 正在尝试回滚...
[2021-05-11 17:11:10] 无需回滚
[2021-05-11 17:11:10] 正在清理内容...
[2021-05-11 17:11:10] 正在删除临时目录 '/var/www/discourse/tmp/restores/default/2021-05-11-171108'...
[2021-05-11 17:11:10] 将恢复标记为完成...
[2021-05-11 17:11:10] 通知 'biyaniyash' 恢复结束...
你日志中的这一行似乎是关键线索:
[2021-05-11 17:11:10] 异常:你正在尝试恢复一个更新版本的架构。请先进行迁移!
我在这方面不是特别专家,但我觉得你需要确保 Discourse 版本与备份一致。
确认一下——你更新 Discourse 时是通过命令行操作的对吗?使用的是 ./launcher rebuild app 命令。
看起来有一个插件迁移脚本,要求您至少安装 assign、policy 和 solved 插件。
以下是我们目前在 Teams 中包含的完整插件列表——未来可能会有所调整。您可以直接将此列表复制并粘贴到 app.yml 中引用 docker manager 的那一行下方。请务必完全匹配缩进!这些都是官方插件,即使您决定不使用它们,安装也是安全的。这里未包含一些提供 Teams 侧边栏和 Teams 托管特定功能的额外插件。
- git clone https://github.com/discourse/discourse-assign.git
- git clone https://github.com/discourse/discourse-cakeday.git
- git clone https://github.com/discourse/discourse-calendar.git
- git clone https://github.com/discourse/discourse-chat-integration.git
- git clone https://github.com/discourse/discourse-checklist.git
- git clone https://github.com/discourse/discourse-code-review.git
- git clone https://github.com/discourse/discourse-docs.git
- git clone https://github.com/discourse/discourse-encrypt.git
- git clone https://github.com/discourse/discourse-footnote.git
- git clone https://github.com/discourse/discourse-github.git
- git clone https://github.com/discourse/discourse-graphviz.git
- git clone https://github.com/discourse/discourse-math.git
- git clone https://github.com/discourse/discourse-openid-connect.git
- git clone https://github.com/discourse/discourse-policy.git
- git clone https://github.com/discourse/discourse-shared-edits.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-spoiler-alert.git
嘿,Tobias,
感谢你的列表!
哎呀,我是通过管理面板升级的。
然后进行了恢复,但失败了。
接着在 app.yml 中添加了插件,然后运行了 rebuilder。
再次恢复,这次成功了。
但前端仍然出现同样的“哎呀”错误!
啊啊啊。
正在一点点逼近!
你能查看一下 /logs 并告诉我是否看到任何错误吗?如果有,请把错误信息粘贴到这里。
OK, I have now also finished a backup/restore from a Teams site to self-hosted, with uploads and all plugins in app.yml, and am getting the same 500 error when looking at latest. I am able to access the admin section.
I see an error in the log that looks relevant. It seems to be about s3 but in the admin settings, s3 is clearly disabled on my self-hosted site.
See log:
/var/www/discourse/app/models/global_setting.rb:107:in `s3_bucket_name'
/var/www/discourse/app/models/site_setting.rb:157:in `absolute_base_url'
/var/www/discourse/app/models/upload.rb:186:in `secure_media_url_from_upload_url'
/var/www/discourse/lib/url_helper.rb:60:in `secure_proxy_without_cdn'
/var/www/discourse/lib/url_helper.rb:83:in `cook_url'
/var/www/discourse/app/models/topic_link.rb:274:in `ensure_entry_for'
/var/www/discourse/app/models/topic_link.rb:128:in `block (2 levels) in extract_from'
activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in `block in within_new_transaction'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in `within_new_transaction'
activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in `transaction'
/var/www/discourse/app/models/topic_link.rb:126:in `block in extract_from'
/var/www/discourse/app/models/topic_link.rb:124:in `each'
/var/www/discourse/app/models/topic_link.rb:124:in `extract_from'
/var/www/discourse/app/models/post.rb:691:in `rebake!'
/var/www/discourse/app/models/post.rb:645:in `block in rebake_old'
/var/www/discourse/app/models/post.rb:639:in `each'
/var/www/discourse/app/models/post.rb:639:in `rebake_old'
/var/www/discourse/app/jobs/scheduled/periodical_updates.rb:29:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
/var/www/discourse/app/jobs/base.rb:279:in `perform'
mini_scheduler-0.13.0/lib/mini_scheduler/manager.rb:93:in `process_queue'
mini_scheduler-0.13.0/lib/mini_scheduler/manager.rb:37:in `block (2 levels) in initialize'
And also, I attempted a rebake of posts, and saw the same error there. Here’s the full log:
Summary
root@tobiastest-app:/var/www/discourse# rake posts:rebake
Rebaking post markdown for ‘default’
97 / 2590 ( 3.7%)
Failed to rebake (topic_id: 6527, post_id: 8052)
undefined method downcase' for nil:NilClass /var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name’
/var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url' /var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url’
/var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn' /var/www/discourse/lib/url_helper.rb:83:in cook_url’
/var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for' /var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction’
/var/www/discourse/app/models/topic_link.rb:126:in block in extract_from' /var/www/discourse/app/models/topic_link.rb:124:in each’
/var/www/discourse/app/models/topic_link.rb:124:in extract_from' /var/www/discourse/app/models/post.rb:691:in rebake!’
/var/www/discourse/lib/tasks/posts.rake:140:in rebake_post' /var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts’
/var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection' /var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites’
/var/www/discourse/lib/tasks/posts.rake:7:in block in <main>' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run' bin/rake:13:in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in <main>' 148 / 2590 ( 5.7%) Failed to rebake (topic_id: 6527, post_id: 7981) undefined method downcase’ for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name' /var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url’
/var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url' /var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn’
/var/www/discourse/lib/url_helper.rb:83:in cook_url' /var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for’
/var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction' /var/www/discourse/app/models/topic_link.rb:126:in block in extract_from’
/var/www/discourse/app/models/topic_link.rb:124:in each' /var/www/discourse/app/models/topic_link.rb:124:in extract_from’
/var/www/discourse/app/models/post.rb:691:in rebake!' /var/www/discourse/lib/tasks/posts.rake:140:in rebake_post’
/var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts' /var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection’
/var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites' /var/www/discourse/lib/tasks/posts.rake:7:in block in ’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run’
bin/rake:13:in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>’
/usr/local/bin/bundle:23:in load' /usr/local/bin/bundle:23:in ’
252 / 2590 ( 9.7%)
Failed to rebake (topic_id: 6527, post_id: 7850)
undefined method downcase' for nil:NilClass /var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name’
/var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url' /var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url’
/var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn' /var/www/discourse/lib/url_helper.rb:83:in cook_url’
/var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for' /var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction’
/var/www/discourse/app/models/topic_link.rb:126:in block in extract_from' /var/www/discourse/app/models/topic_link.rb:124:in each’
/var/www/discourse/app/models/topic_link.rb:124:in extract_from' /var/www/discourse/app/models/post.rb:691:in rebake!’
/var/www/discourse/lib/tasks/posts.rake:140:in rebake_post' /var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts’
/var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection' /var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites’
/var/www/discourse/lib/tasks/posts.rake:7:in block in <main>' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run' bin/rake:13:in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in <main>' 523 / 2590 ( 20.2%) Failed to rebake (topic_id: 6448, post_id: 7559) undefined method downcase’ for nil:NilClass
/var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name' /var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url’
/var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url' /var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn’
/var/www/discourse/lib/url_helper.rb:83:in cook_url' /var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for’
/var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction' /var/www/discourse/app/models/topic_link.rb:126:in block in extract_from’
/var/www/discourse/app/models/topic_link.rb:124:in each' /var/www/discourse/app/models/topic_link.rb:124:in extract_from’
/var/www/discourse/app/models/post.rb:691:in rebake!' /var/www/discourse/lib/tasks/posts.rake:140:in rebake_post’
/var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts' /var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection’
/var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites' /var/www/discourse/lib/tasks/posts.rake:7:in block in ’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run’
bin/rake:13:in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>’
/usr/local/bin/bundle:23:in load' /usr/local/bin/bundle:23:in ’
1437 / 2590 ( 55.5%)
Failed to rebake (topic_id: 5684, post_id: 6112)
undefined method downcase' for nil:NilClass /var/www/discourse/app/models/global_setting.rb:107:in s3_bucket_name’
/var/www/discourse/app/models/site_setting.rb:157:in absolute_base_url' /var/www/discourse/app/models/upload.rb:186:in secure_media_url_from_upload_url’
/var/www/discourse/lib/url_helper.rb:60:in secure_proxy_without_cdn' /var/www/discourse/lib/url_helper.rb:83:in cook_url’
/var/www/discourse/app/models/topic_link.rb:274:in ensure_entry_for' /var/www/discourse/app/models/topic_link.rb:128:in block (2 levels) in extract_from’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in block in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:310:in block in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in block (2 levels) in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/transaction.rb:308:in within_new_transaction’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in transaction' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/transactions.rb:209:in transaction’
/var/www/discourse/app/models/topic_link.rb:126:in block in extract_from' /var/www/discourse/app/models/topic_link.rb:124:in each’
/var/www/discourse/app/models/topic_link.rb:124:in extract_from' /var/www/discourse/app/models/post.rb:691:in rebake!’
/var/www/discourse/lib/tasks/posts.rake:140:in rebake_post' /var/www/discourse/lib/tasks/posts.rake:125:in block (2 levels) in rebake_posts’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/relation/delegation.rb:88:in each’
/var/www/discourse/lib/tasks/posts.rake:124:in block in rebake_posts' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/core_ext/range/each.rb:14:in step' /var/www/discourse/lib/tasks/posts.rake:123:in rebake_posts’
/var/www/discourse/lib/tasks/posts.rake:107:in block in rebake_posts_all_sites' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:80:in with_connection’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-3.0.0/lib/rails_multisite/connection_management.rb:90:in each_connection' /var/www/discourse/lib/tasks/posts.rake:106:in rebake_posts_all_sites’
/var/www/discourse/lib/tasks/posts.rake:7:in block in <main>' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in block in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:281:in execute’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:219:in block in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in synchronize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:199:in invoke_with_call_chain' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/task.rb:188:in invoke’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:160:in invoke_task' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block (2 levels) in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:116:in block in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:125:in run_with_threads' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:110:in top_level’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:83:in block in run' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:186:in standard_exception_handling’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/lib/rake/application.rb:80:in run' bin/rake:13:in <top (required)>’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in load' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:63:in kernel_load’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli/exec.rb:28:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:494:in exec’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor.rb:392:in dispatch' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:30:in dispatch’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/vendor/thor/lib/thor/base.rb:485:in start' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/cli.rb:24:in start’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:49:in block in <top (required)>' /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/lib/bundler/friendly_errors.rb:130:in with_friendly_errors’
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.16/exe/bundle:37:in <top (required)>' /usr/local/bin/bundle:23:in load’
/usr/local/bin/bundle:23:in `’
2590 / 2590 (100.0%)
2590 posts done!
I had a look on meta for some of these errors and it seems to have come up before, but I did not see any obvious resolutions. I’m sure the solution will be obvious to someone!
有什么解决方案或想法可以解决这个问题吗?是否有其他备份和恢复的方式可以使用?
呼吁 Discourse 社区的朋友们!
嗨 Yash!你看到我上面的请求了吗?
如果你能确认你遇到的错误与我遇到的相同,或者说明你的问题有所不同,那将非常有帮助。在我看来,从 Teams 迁移到自托管似乎存在一个漏洞。
梳理这个问题需要一点时间,抱歉!希望你没有受到太大不便,同时也希望这个学习过程在你开启自托管之旅时能带来积极体验。起初要学习的内容确实不少,但一旦掌握,你就会充满力量。
如果这种悬而未决的状态对你的团队造成了困扰,你随时可以返回 Discourse for Teams 托管服务! 或者,你也可以暂时不要立即取消 Discourse for Teams 订阅,而是多付费一段时间,等我们修复完所有问题后再进行迁移——请随时告诉我。此外,你也可以在 Marketplace 频道中寻求社区提供的付费帮助。
哎呀,抱歉。
这是日志:
Discourse 团队预计何时能查看并调试/解决此问题?这将有助于我们决定备选方案。
太棒了!很高兴得知您遇到的问题与我这边能够复现的问题一致。
我们已为您延长了 Discourse for Teams 托管服务的时间,因此在我们找到并修复该错误之前,您可以继续免费使用。届时,您可以取消托管服务,获取最新的备份,然后将其恢复到您自托管的站点上。希望这个方案对您可行。
感谢您在此过程中保持耐心并愿意充当“小白鼠”!
谢谢你,托比亚斯!很感激你的好意! 愿原力与你同在!
@neil 找到了修复方案。真是出色的侦查!
在命令行中执行:
cd /var/discourse
./launcher enter app
rails c
Upload.update_all(secure: false)
这对我来说让网站恢复了正常运行。@biyaniyash 请尝试一下,并告诉我们结果。
原因是,在 Discourse for Teams 上,启用了 Secure Uploads 功能,这需要 S3 支持。而在新恢复的自托管站点上,安全媒体上传功能已禁用,上传文件存储在服务器本地。但备份中的任何现有上传文件已被标记为安全,从而导致错误。
不!你没有任何错误,任务已完成。
=> 270 表示已处理了多少帖子。现在你可以输入 exit 退出 Rails,然后再输入一次 exit 退出 Docker 容器。
现在前往你的论坛首页,看看显示的内容,并在此反馈!
我们恢复上线啦!太棒了!感谢 @neil 、@tobiaseigen 以及所有参与我们这场小型讨论的朋友们!
给各位总结一下解决方案:
确保团队备份包含 SQL 数据和文件上传内容。
使用以下说明在 DigitalOcean (DO) 上启动自托管站点:https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md(注意:我们尚未在 DO 市场的一键式 Droplet 上测试过此流程)。
进入新站点的 /admin/site_settings/category/all_results?filter=s3 页面,禁用所有与 S3 相关的设置。
将 Discourse 更新到最新版本。[建议:使用 ./launcher rebuild app 命令。]
安装所有插件(请务必与 Discourse 团队确认最新插件,或查看您的团队插件页面):
“看起来有一个插件迁移脚本,要求您至少安装 assign、policy 和 solved 这三个插件。以下是我们目前包含在 Teams 中的完整插件列表——未来可能会有所调整。您可以直接将此列表复制粘贴到 app.yml 文件中引用 docker manager 的那一行下方。请务必完全匹配缩进!这些都是官方插件,即使您决定不使用它们,安装也是安全的。这里未包含一些额外的插件,它们提供 Teams 侧边栏以及 Teams 托管特有的功能。
- git clone https://github.com/discourse/discourse-assign.git
- git clone https://github.com/discourse/discourse-cakeday.git
- git clone https://github.com/discourse/discourse-calendar.git
- git clone https://github.com/discourse/discourse-chat-integration.git
- git clone https://github.com/discourse/discourse-checklist.git
- git clone https://github.com/discourse/discourse-code-review.git
- git clone https://github.com/discourse/discourse-docs.git
- git clone https://github.com/discourse/discourse-encrypt.git
- git clone https://github.com/discourse/discourse-footnote.git
- git clone https://github.com/discourse/discourse-github.git
- git clone https://github.com/discourse/discourse-graphviz.git
- git clone https://github.com/discourse/discourse-math.git
- git clone https://github.com/discourse/discourse-openid-connect.git
- git clone https://github.com/discourse/discourse-policy.git
- git clone https://github.com/discourse/discourse-shared-edits.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-spoiler-alert.git
恢复您的备份。
从命令行执行:
cd /var/discourse
./launcher enter app
rails c
Upload.update_all(secure: false)
完成!一切应该都已就绪!
Tobias,仅供参考——我尝试在 Teams 站点再次执行备份。备份问题仍未解决。你可能需要修复那个无法在备份中包含文件上传的 bug。
太棒了!感谢 Yash 提供的步骤总结!您是否愿意为那些希望从 Teams 迁移到自托管的用户发布一个新主题?如果您不发布,我来发布。
我们仅支持官方安装方法,即 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 中的说明。原因是我们无法确定其他方法是否有效,且故障排查会变得过于困难甚至不可能。
一旦 @neil 修复的这个问题被合并,此步骤在未来将不再需要。这可能需要几周时间。
master ← neil-12
merged 05:25PM - 08 Jun 21 UTC
After restoring a database from a site that had secure media configured and disa… bling the secure_media setting, any page with an upload will raise errors. This change will allow the uploads to be loaded from the local files. I'm not sure if this is the correct fix, so someone who knows more about secure media should review.
实际上,该功能并未损坏,而是按设计正常工作。正如页面上所解释的,您需要向我们申请完整备份。我们不在 Discourse for Teams 上宣传此页面,因为客户无需自行备份——所有托管客户的数据都会自动每 12 小时备份一次,并存储在场外。如果您取消托管服务,我们将为您提供包含上传文件的完整备份,您可以下载并根据需要自行部署。
嘿,Tobias,
感谢你的澄清!
我还在熟悉这个社区。我应该把这个问题发到“托管”板块吗?我好像无法在“操作指南”类别中发帖。我猜那是作为官方维基式资源来维护的。如果更方便的话,你也可以直接发帖。
这只是关于备份的一点个人看法。
我觉得,如果你能在页面上清晰地解释这一点,肯定会很有帮助。据我所知,Discourse 建立在透明和真实的基础上,这完全契合“充分披露”这一部分的内容。
不过,既然你已经在客户管理页面中完全禁用了团队备份功能,用户最终还是会联系你,到时候你就可以向他们解释其中的细节条款了。
我会先发布操作指南主题——你说得对,在那里发帖需要特定权限。发布后我会在此分享链接,并希望能得到你的审阅。
我还会考虑优化备份页面,使其更加透明,特别是针对托管客户。对于自建站点,备份和恢复功能相对简单直接。你只需注意不要在本机保留过多备份,以免存储空间耗尽!