Erreur inattendue dans CI

MISE À JOUR : @NateDhaliwal souligne à juste titre que mon accès à la base de données dans after_initializer pourrait enfreindre les règles - j’ai eu de la chance pendant longtemps.

Je vais apporter quelques modifications.

J’obtiens :

ActiveRecord::NoDatabaseError: Nous n'avons pas pu trouver votre base de données : discourse_test. Les configurations de base de données disponibles se trouvent dans config/database.yml. (ActiveRecord::NoDatabaseError)
détail
rake aborted!
ActiveRecord::NoDatabaseError: Nous n'avons pas pu trouver votre base de données : discourse_test. Les configurations de base de données disponibles se trouvent dans config/database.yml. (ActiveRecord::NoDatabaseError)
Pour résoudre cette erreur :
- N'avez-vous pas créé la base de données, ou l'avez-vous supprimée ? Pour créer la base de données, exécutez :
    bin/rails db:create
- Le nom de la base de données a-t-il changé ? Vérifiez que config/database.yml contient le bon nom de base de données.
/__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'

dans mon workflow GitHub

Quelque chose a-t-il changé dans le workflow CI standard dont je n’étais pas au courant ?

Je suis toujours les instructions :

et j’utilise la v1

Aucun de mes codes ne s’exécute jusqu’à ce point (sauf les installations de gemmes) et cette PR ne contient de toute façon que des modifications de configuration mineures.

PS Il semble que cela ait évolué récemment : History for .github/workflows/discourse-plugin.yml - discourse/.github · GitHub

2 « J'aime »

Pas certain à 100 %, mais je pense que cela se produit si vous utilisez ActiveRecord via des choses comme User, etc. ouvertement, par exemple, pas dans on() ou dans un job, mais juste dans after_initialize.

J’ai aussi rencontré cela il n’y a pas longtemps… si je me souviens bien, j’ai dû demander à l’IA pour cela ; j’ai déplacé le code vers un job planifié et tout est rentré dans l’ordre après.

2 « J'aime »

Mes excuses, en y regardant de plus près, il semble que cela échoue sur mon code, mais j’y accède dans after_initialize

Il semble que les règles aient changé :

user_count = User.count

n’est plus légal dans un initialiseur (c’était peut-être toujours une mauvaise pratique)

Merci pour la suggestion ! :clap:

Je pense que vous avez absolument raison, je devrais déplacer cela dans un job et l’exécuter une fois. :+1:

1 « J'aime »

Pas de problème, content que vous y soyez parvenu !

1 « J'aime »