NoMethodError: método não definido `min_tags_from_required_group'

Olá equipe do Discourse!

Estou tentando executar o Discourse Docker no Ubuntu na versão estável (v2.8.8) e estou encontrando o seguinte erro:

rake aborted!
NoMethodError: undefined method `min_tags_from_required_group' for #<Category:0x00007fc2ffae9f38>
/src/lib/seed_data/categories.rb:114:in `create_category'
/src/lib/seed_data/categories.rb:15:in `block (2 levels) in create'
/src/lib/seed_data/categories.rb:15:in `each'
/src/lib/seed_data/categories.rb:15:in `block in create'
/src/lib/seed_data/categories.rb:14:in `create'
(eval):6:in `block (2 levels) in run_file'
/src/lib/tasks/db.rake:225:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Informações adicionais sobre o que já fiz:

O que fiz até agora para chegar aqui:

sudo -s
git clone -b v2.8.8 https://github.com/discourse/discourse.git
chmod -R 2777 ./discourse
cd discourse

Tive alguns problemas com marcadores anteriormente, então tive que:

nano db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb

e colei isto: discourse/db/migrate/20220322024216_add_bookmark_polymorphic_columns.rb at cd817a436574cd00f0bae339ec0c4fe2fcf2bb50 · discourse/discourse · GitHub

Então, quando executo:

d/boot_dev -p --init

Recebo o erro sobre min_tags_from_required_groups.

Alguém pode ajudar?

Esta é uma instalação de desenvolvimento ou uma instalação padrão?

Se você estiver tentando executar em produção, definirá a versão como estável em seu app.yml. Você não clonaria o discourse como indicou.

Você tem algum plugin?

Olá @pfaffman,

Obrigado por responder!

Esta é uma instância de desenvolvimento, então não tenho o app.yml

Nenhum plugin instalado, eu estava apenas esperando executar uma instância de desenvolvimento em stable no Ubuntu.

Ah! Entendi agora. Talvez eu não devesse postar no meio da noite.

Havia um banco de dados antes de você mudar para estável? talvez você precise

  rake db:drop db:create db:migrate

Você não deve precisar selecionar uma migração.

Olá @pfaffman,

Espero que você tenha tido um ótimo fim de semana! Obrigado por responder, vou testar isso hoje e te darei um retorno!

Olá @pfaffman,

Depois de executar sudo -s e depois d/rake db:drop db:create db:migrate, recebi o seguinte erro:

PG::InsufficientPrivilege: ERROR:  must be owner of database discourse_development
Couldn't drop database 'discourse_development'
rake aborted!
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR:  must be owner of database discourse_development


Caused by:
PG::InsufficientPrivilege: ERROR:  must be owner of database discourse_development

Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)

Entrei em d/psql e obtive a lista:

discourse-> \l
                                          List of databases
           Name           |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges    
--------------------------+----------+----------+-------------+-------------+------------------------
 discourse                | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres          +
                          |          |          |             |             | postgres=CTc/postgres +
                          |          |          |             |             | discourse=CTc/postgres
 discourse_development    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres          +
                          |          |          |             |             | postgres=CTc/postgres +
                          |          |          |             |             | discourse=CTc/postgres
 discourse_test           | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres          +
                          |          |          |             |             | postgres=CTc/postgres +
                          |          |          |             |             | discourse=CTc/postgres
 discourse_test_multisite | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres          +
                          |          |          |             |             | postgres=CTc/postgres +
                          |          |          |             |             | discourse=CTc/postgres
 postgres                 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0                | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres           +
                          |          |          |             |             | postgres=CTc/postgres
 template1                | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres           +
                          |          |          |             |             | postgres=CTc/postgres
(7 rows)

Como posso resolver este erro?

Hmm. Talvez apenas excluir e recriar esses bancos de dados você mesmo e migrá-los com a tarefa do rake. Ou dar ao usuário do discourse direitos de criar e destruir (acho que é mais fácil).

Olá @pfaffman,

Infelizmente, não estou muito familiarizado com o processo de conceder ao usuário do Discourse direitos para criar e destruir. Na primeira opção, você está dizendo que devo apenas excluir todos esses bancos de dados e, em seguida, executar d/rake db:create db:migrate? Está correto?

Pesquise no Google por "postgres user roles" ou algo parecido. É o que eu faço. É algo assim

su - postgres
psql
grant all rights to usee 'discoursev;'

Mas isso provavelmente está errado

Olá @pfaffman,

Obrigado pela sua ajuda até agora! Quero apenas dar um passo atrás antes de me aprofundar na solução de problemas do psql, meu objetivo principal é apenas executar o ambiente de desenvolvimento do Discourse docker (na versão estável) no Ubuntu, que funciona bem e como esperado no Mac. Não deveria ser capaz de fazer isso sem esses erros de tabela e migração? Quando tento fazer uma instalação limpa, recebo o erro de marcador, e depois de resolvê-lo, recebo este erro NoMethodError, e agora o erro InsufficientPrivilege.

Inicialmente, pensei que era porque eu estava no test-passed, então mudar para a versão estável causou o problema, mas mesmo em uma instância Ubuntu limpa e vazia, o NoMethodError ainda aparece, isso sem nenhum banco de dados pré-existente, acabei de fazer o Passo #1 e o Passo #2 aqui:

Você consegue instalar a versão estável no Ubuntu sem problemas?

Reabrindo este tópico! Gostaria de saber se mais alguém conseguiu executar um ambiente de desenvolvimento na versão estável do Ubuntu.

Tente

   ./bundle exec rake db:drop db:create db:migrate

Olá @pfaffman,

Obrigado pela sua resposta! Infelizmente, continuo a encontrar o mesmo problema:

d/bundle exec rake db:drop db:create db:migrate
PG::InsufficientPrivilege: ERROR:  must be owner of database discourse_development
Couldn't drop database 'discourse_development'
rake aborted!
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR:  must be owner of database discourse_development
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'

Caused by:
PG::InsufficientPrivilege: ERROR:  must be owner of database discourse_development
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)

Tentei isto numa instância vazia (reiniciada do início, sem bases de dados ou informações existentes) usando o guia para iniciantes e o resultado é o mesmo.

Este é o erro que ainda recebo em d/rails s

NoMethodError (undefined method `min_tags_from_required_group' for #<Category:0x00007f3cca7ce5a8>)
(eval):36:in `_fast_attributes'
app/models/site.rb:70:in `block in all_categories_cache'
lib/cache.rb:94:in `fetch'
app/models/site.rb:52:in `all_categories_cache'
app/models/site.rb:78:in `categories'
app/serializers/site_serializer.rb:203:in `categories'
(eval):32:in `_fast_attributes'
app/models/site.rb:167:in `json_for'
app/controllers/application_controller.rb:595:in `preload_anonymous_data'
app/controllers/finish_installation_controller.rb:69:in `ensure_no_admins'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/missing_avatars.rb:23:in `call'
lib/middleware/turbo_dev.rb:34:in `call'

Então você precisará excluir o banco de dados de outra forma. Você pode pesquisar no Google sobre postgres (é o que eu faço quando preciso fazer isso) ou esperar que alguém que se lembre poste aqui. A outra opção é verificar se o usuário do discourse tem permissão para excluir e criar bancos de dados.