Eita, d/cleanup é perigoso. Essa é uma boa maneira de perder muito trabalho do Docker que não tem nada a ver com Discourse…
Comecei a fazer alguns hacks manuais como os seguintes que estavam funcionando, mas continuavam aparecendo mais e mais problemas de permissão, então decidi parar de tentar apagar incêndios.
mkdir app/assets/javascripts/plugins
mkdir tmp
sudo chown 1000:1000 tmp
sudo chown 1000:1000 app/assets/javascripts/plugins
Vou usar o usuário host com um uid de 1000 e aposto que vai funcionar agora, mas isso realmente expõe uma deficiência em como o desenvolvimento do Discourse é feito, parece.
…e sim, isso resolveu.
No caso desse “tmp”, ele poderia estar em um volume Docker nomeado ou anônimo. Com os plugins, poderia ser útil ter esse volume montado, mas as permissões do sistema de arquivos do host precisariam ser alteradas para suportar gravações.
Não acho seguro assumir que todo desenvolvedor usará um uid de 1000.
Olá pessoal, vocês sabem como executar o desenvolvimento usando uma versão antiga do Discourse? Eu sei que no Discourse em produção podemos definir a versão em app.yml. Mas eu não sei como fazer isso em desenvolvimento usando Docker. Eu quero executar o desenvolvimento na última versão estável v2.7.10. Obrigado pela ajuda.
Apenas faça o checkout desse branch ou commit no git. (A forma como eu faço é pesquisando no Google
Você precisará remover, criar e migrar o banco de dados após o downgrade.
Oi, obrigado @pfaffman,
Eu fiz um git pull limpo do Discourse e fiz o checkout da branch de versão “stable”. (que usa a tag do Discourse v2.7.10)
Eu executei dev init e defini o e-mail e a senha do usuário administrador
d/boot_dev --init
e executei o rails server, ele escutará na porta 3000
d/rails s
então executei o ember-cli
cd app/assets/javascripts/discourse
yarn
yarn run ember serve --proxy "http://localhost:3000"
o desenvolvimento do Discourse pode ser aberto em “http://localhost:4200”
No entanto, tive um problema ao fazer login como usuário administrador (aquele que criei ao executar “d/boot_dev --init”)
Um pop-up “Erro desconhecido” apareceu na tela, com o seguinte erro em /logs
ActiveRecord::StatementInvalid (PG::UndefinedFunction: ERROR: function max(boolean) does not exist
LINE 1: ..._rank, MAX(user_badges.created_at) AS created_at, MAX(user_b...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
)
lib/freedom_patches/ams_include_without_root.rb:49:in `include!'
app/controllers/application_controller.rb:495:in `serialize_data'
app/controllers/application_controller.rb:504:in `render_serialized'
app/controllers/session_controller.rb:611:in `login'
app/controllers/session_controller.rb:337:in `create'
app/controllers/application_controller.rb:395:in `block in with_resolved_locale'
app/controllers/application_controller.rb:395: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'
Você tem alguma experiência com esse erro? ou talvez meu passo para executar o desenvolvimento na versão anterior estava errado?
Eu acho que você precisa usar rm -r no banco de dados. Não tenho certeza de onde ele está, mas provavelmente está no OP.
Olá a todos,
Fui totalmente limpo novamente. Tudo corre bem, obtenho um ambiente de desenvolvimento imaculado no qual posso fazer login.
Em seguida, instalo alguns plugins para corresponder ao meu ambiente de produção e puxo o backup mais recente.
Faço o upload, tento restaurá-lo no ambiente de desenvolvimento e recebo novamente o erro de autenticação Peer. Abri um bug, mas até agora não houve resposta. Alguém pode tentar reproduzir? Eu vi problemas semelhantes mais adiante nos comentários desta postagem, então acho que não estou sozinho nisso?
[2021-11-29 19:43:39] 'koen' iniciou a restauração!
[2021-11-29 19:43:39] Marcando restauração como em execução...
[2021-11-29 19:43:39] Garantindo que /src/tmp/restores/default/2021-11-29-194339 exista...
[2021-11-29 19:43:39] Copiando arquivo de backup para o diretório tmp...
[2021-11-29 19:43:39] Extraindo arquivo de dump...
[2021-11-29 19:43:40] Validando metadados...
[2021-11-29 19:43:40] Versão atual: 20211124161346
[2021-11-29 19:43:40] Versão restaurada: 20211123033311
[2021-11-29 19:43:40] Habilitando modo somente leitura...
[2021-11-29 19:43:40] Pausando sidekiq...
[2021-11-29 19:43:40] Aguardando até 60 segundos para o Sidekiq terminar de executar tarefas...
[2021-11-29 19:43:46] Criando funções ausentes no esquema discourse_functions...
[2021-11-29 19:43:46] Restaurando arquivo de dump... (isso pode levar algum tempo)
[2021-11-29 19:43:47] psql: erro: conexão com o servidor no socket "/var/run/postgresql/.s.PGSQL.5432" falhou: FATAL: Peer authentication failed for user "postgres"
[2021-11-29 19:43:47] EXCEPTION: psql falhou: psql: erro: conexão com o servidor no socket "/var/run/postgresql/.s.PGSQL.5432" falhou: FATAL: Peer authentication failed for user "postgres"
[2021-11-29 19:43:47] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
/src/script/spawn_backup_restore.rb:23:in `restore'
/src/script/spawn_backup_restore.rb:36:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2021-11-29 19:43:47] Tentando reverter...
[2021-11-29 19:43:47] Não foi necessário reverter
[2021-11-29 19:43:47] Limpando...
[2021-11-29 19:43:47] Removendo funções do esquema discourse_functions...
[2021-11-29 19:43:47] Removendo diretório tmp '/src/tmp/restores/default/2021-11-29-194339'...
[2021-11-29 19:43:47] Despausando sidekiq...
[2021-11-29 19:43:47] Marcando restauração como concluída...
[2021-11-29 19:43:47] Notificando 'koen' sobre o fim da restauração...
[2021-11-29 19:43:51] Concluído!
Olá,
Estou tendo um problema que parece originar-se da cisão entre as portas 3000 e 4200. Não tenho certeza de como elas se relacionam, mas entendo que 3000 é o servidor e 4200 um proxy para ele a partir do Ember CLI. A porta 4200 funciona bem, exceto que às vezes, e especificamente ao responder com um 302, os cabeçalhos de resposta têm URIs que usam a porta 3000 em vez de 4200. Eu estava especificamente tentando fazer o OAuth2 funcionar com um provedor personalizado, como descrito aqui, e a presença da porta 3000 em algumas das respostas quebra o fluxo de trabalho do OAuth2. Não há porta 3000 em nenhuma das minhas configurações OAuth2, deve estar vindo internamente do servidor.
Alguém já encontrou esse tipo de problema antes? Você sabe como configurar um ambiente que imite mais de perto a versão de produção?
Para constar, também tentei configurar a versão de produção localmente, mas isso requer registro de domínio e e-mail completo e não parece muito amigável para ambientes locais.
Obrigado.
Atualização, tentei novamente seguir o caminho de instalação limpa e desta vez usando outra máquina. Agora fico preso porque não tenho o UID 1000 que foi mencionado anteriormente neste tópico, postagem 100 por @dcook. Concordaria que assumir UID=1000 está errado e constituiria um bug. Você o relatou como tal?
Na minha máquina principal, o bug de permissão do usuário Postgress persiste, o que levantei aqui: Backup restore failing on clean dev docker env: FATAL: Peer authentication failed for user “postgres”.
@rishabh qual é a sua opinião sobre ambos os itens? Adorei mudar para o método baseado em docker, rápido e limpo. Mas agora em duas máquinas diferentes parece um pouco um beco sem saída e estou me perguntando o que mais posso contribuir para que seja resolvido. Também estou me perguntando um pouco sobre o ciclo de vida dos bugs. Eles são recebidos, revisados, rejeitados ou aceitos, arquivados, resolvidos etc.?
Por enquanto, vou tentar configurar o ambiente de desenvolvimento nativo para ver se consigo fazê-lo funcionar.
Olá. Esta é a minha primeira vez instalando o Discourse usando Docker no Mac.
Primeiro, desculpe pelo meu inglês… ![]()
Eu já executei
d/boot_dev --init
Então recebi um erro de que a porta:3000 já estava em uso. Então mudei a porta 30030:3000 (arquivo: bin/docker/boot_dev)
Depois disso, iniciei este código
d/boot_dev --init
# Em um terminal:
d/rails s
# E em um terminal separado
d/ember-cli
Minhas perguntas são:
-
Quando executo o código
d/rails s. Posso abrir a página inicial do Discourse em ‘localhost:30030’. Se eu quiser apenas abrir o Discourse e usar a porta 30030 (encaminhamento de porta), então posso finalizar o processo de instalação?? Eu não sei o que éd/rails s,d/ember-cli. … -
E o processo
d/rail sé muito longo. Estou preocupado se há algo errado… está certo? oud/rails sed/ember-clisão processos em segundo plano enquanto hospedam o Discourse?
Obrigado. ![]()
Olá,
No ambiente de desenvolvimento, é possível editar as configurações de config que deveriam estar em app.yml?
A pergunta é principalmente sobre editar DISCOURSE_ENABLE_CORS; simplesmente adicionar origens CORS na interface de administração não ajudou a resolver o erro CORS.
Obrigado.
Parece que a criação de um arquivo discourse.conf em /config resolveu o problema:
enable_cors = true
Informações retiradas do arquivo de configuração padrão: discourse/config/discourse_defaults.conf at main · discourse/discourse · GitHub
Olá pessoal, tive um problema ao iniciar o desenvolvimento do Discourse usando o Docker.
Minha versão de produção do Discourse usa a tag v2.8.0. Portanto, preciso executar o desenvolvimento local usando a v2.8.0.
Eu uso o Docker rodando no Mac OS para minha configuração de desenvolvimento.
O que fiz no comando foi:
git clone https://github.com/discourse/discourse.git
cd discourse
git checkout v2.8.0
d/boot_dev --init
Recebi este erro após a seção de migração do banco de dados do código init:
Migrating database...
== 20220104053343 AddBookmarkPolymorphicColumns: migrating ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218: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>'
Caused by:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218: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>'
Há 2 meses eu executava o desenvolvimento usando a versão 2.8.0 e não tive problemas, mas há alguns dias comecei a ter esse problema.
Vocês têm o mesmo problema?
Se você migrou o banco de dados com uma versão posterior do Discourse, precisará remover e criar um novo banco de dados para obter a migração mais antiga.
Fiz um novo clone limpo e iniciei o desenvolvimento usando a versão 2.8.0. ainda não deve haver dados.
Cometi um erro durante a instalação, posso saber se há alguma maneira possível de desinstalar tudo e refazer do início?
Olá, encontrei este erro estranho. Alguém tem experiência em resolver este problema? Agradeço antecipadamente!
Ele aparece quando eu estava executando d/boot_dev --init.
Migrating database...
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
Recebi a mesma mensagem de erro ao executar d/boot_dev --init, tentei d/rake db:migrate RAILS_ENV=development, o mesmo erro ocorreu novamente:
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
Eu também tive esse problema. E corrigi revertendo este commit
Funciona perfeitamente para mim. Obrigado.