CI 中出现意外错误

更新:@NateDhaliwal 正确地指出,我在 after_initializer 中访问数据库可能会违反规则——我只是运气好而已。

我将做一些更改。

我遇到了:

ActiveRecord::NoDatabaseError: 我们找不到您的数据库:discourse_test。可在 config/database.yml 中找到可用的数据库配置。(ActiveRecord::NoDatabaseError)
详细信息
rake aborted!
ActiveRecord::NoDatabaseError: 我们找不到您的数据库:discourse_test。可在 config/database.yml 中找到可用的数据库配置。(ActiveRecord::NoDatabaseError)
要解决此错误:
- 您是否未创建数据库,或者是否已删除它?要创建数据库,请运行:
    bin/rails db:create
- 数据库名称是否已更改?请验证 config/database.yml 是否包含正确的数据库名称。
/__w/discourse-chatbot/discourse-chatbot/config/initializers/000-pg-connection-debug.rb:14:in `rescue in new_client'
/__w/discourse-chatbot/discourse-chatbot/config/initializers/000-pg-connection-debug.rb:4:in `new_client'

在我的 GitHub 工作流

是否有我不知道的关于标准插件 CI 工作流的更改?

我仍然遵循:

并使用 v1

在这一点之前没有我的代码运行(除了 gem 安装),并且此 PR 无论如何都只是次要的配置更改。

附言:看起来它最近一直在发展:History for .github/workflows/discourse-plugin.yml - discourse/.github · GitHub

2 个赞

不完全确定,但我认为如果您通过 User 等方式公开使用 ActiveRecord,例如不在 on() 或 job 中,而只是在 after_initialize 中使用,就会发生这种情况。

我最近也遇到了这个问题……如果我没记错的话,我曾为此询问过 AI;我将代码移到了一个计划任务中,之后就没问题了。

2 个赞

抱歉,仔细一看,确实是我的代码出了问题,但我是在 after_initialize 中访问它的。

看起来规则可能已经改变了:

user_count = User.count

在初始化程序中可能不再合法了(也许一直都是坏习惯)。

感谢你的建议! :clap:

我认为你绝对是对的,我应该将它移到一个任务中并运行一次。 :+1:

1 个赞

没问题,很高兴你解决了问题!

1 个赞