Instale o Discourse no macOS para desenvolvimento

Estou tendo alguns problemas para configurar o discourse para desenvolvimento no meu Mac M1.

As gems fast_xs e gc_tracer falham ao instalar com erros quase semelhantes. Colei a mensagem de erro do fast_xs abaixo. Alguém poderia ajudar?

Building native extensions. This could take a while...
ERROR:  Error installing fast_xs:
	ERROR: Failed to build gem native extension.

    current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
/Users/sisirkoppaka/.rubies/ruby-3.2.0/bin/ruby -I /Users/sisirkoppaka/.rubies/ruby-3.2.0/lib/ruby/site_ruby/3.2.0 extconf.rb
checking for assert.h... yes
creating Makefile

current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
make DESTDIR\= sitearchdir\=./.gem.20240203-10621-j9d0j7 sitelibdir\=./.gem.20240203-10621-j9d0j7 clean

current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
make DESTDIR\= sitearchdir\=./.gem.20240203-10621-j9d0j7 sitelibdir\=./.gem.20240203-10621-j9d0j7
compiling fast_xs.c
fast_xs.c:144:39: error: incompatible function pointer types passing 'VALUE (VALUE)' (aka 'unsigned long (unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE)' (aka 'unsigned long (*)(unsigned long, unsigned long)') [-Wincompatible-function-pointer-types]
  144 |         array = rb_rescue(unpack_utf8, self, unpack_uchar, self);
      |                                              ^~~~~~~~~~~
/Users/sisirkoppaka/.rubies/ruby-3.2.0/include/ruby-3.2.0/ruby/internal/iterator.h:364:62: note: passing argument to parameter 'r_proc' here
  364 | VALUE rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2);
      |                                                              ^
1 error generated.
make: *** [fast_xs.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0 for inspection.
Results logged to /Users/sisirkoppaka/.gem/ruby/3.2.0/extensions/arm64-darwin-22/3.2.0-static/fast_xs-0.8.0/gem_make.out```

Como isso foi resolvido?

Ao executar

bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

após iniciar os servidores Redis e Postgres, recebo o seguinte erro.

fe_sendauth: no password supplied
Couldn't create 'discourse_development' database. Please check your configuration.
rake aborted!

Quando faço isso sem iniciar meus servidores Redis e Postgres, recebo o seguinte erro.

bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
Couldn't connect to Redis
rake aborted!

Alguém pode me dizer o que fazer, estou perdido.

Obrigado

Até agora, consegui resolvê-lo com os seguintes comandos:

bundle config build.fast_xs --with-cflags="-Wno-incompatible-pointer-types"
bundle config build.gc_tracer --with-cflags="-Wno-incompatible-pointer-types"
bundle install

Note que decidimos remover ambas essas gems não essenciais em

e

3 curtidas

Após invocar esta opção, como se desliga o servidor?

Isso não parece mais funcionar, estou recebendo:

fatal: couldn't find remote ref master

Nem a versão para sobrescrever alterações locais (2 posts abaixo).

Alguma ideia sobre como atualizar uma Instalação de Desenvolvimento do Discourse no macOS?

master foi renomeado para main há algum tempo. Tente

cd ~/discourse
git pull origin main
4 curtidas

Obrigado Simon, isso ajuda.

Consegui executar o comando git, mas em algum momento quebrei meu ambiente de desenvolvimento. Acabei com um ambiente de desenvolvimento quebrado, ele mostra minha página inicial de desenvolvimento do Discourse, mas nada parece funcionar (Novo Tópico fica girando).

Qual é a maneira mais fácil de fazer um reset ou uma instalação limpa da minha instalação de desenvolvimento do Discourse?

Tentei executar novamente os comandos de instalação no início deste tópico (ele falha no comando pnpm install). Também tentei executar rake db:drop db:create db:migrate proposto por Arpit anteriormente neste tópico, sem sucesso também.

Consegui atualizar minhas instalações do pnpm e do node executando npm install -g pnpm e brew install node, o que me permitiu executar novamente as instruções de instalação. No entanto, agora estou recebendo o seguinte erro de compilação:

Module not found: Error: Can't resolve '@ember/debug' in '/Users/pieces/discourse/app/assets/javascripts/node_modules/ember-tracked-storage-polyfill/addon/index.js'

Você executou pnpm install depois de executar npm install -g pnpm?

Detalhes sobre a mudança para o uso de pnpm para gerenciamento de pacotes estão aqui: Discourse core is switching to pnpm for JS package management.

2 curtidas

Sim, eu fiz, ainda estou recebendo o erro.

Executei os seguintes passos:

  1. Atualizei os pacotes no meu Mac (executei o script inicial novamente)
  2. Executei bundle install
  3. Executei pnpm install
  4. Executei bundle exec rake db:create\nbundle exec rake db:migrate\nRAILS_ENV=test bundle exec rake db:create db:migrate
  5. Executei bundle exec rails server
  6. Executei bin/ember-cli em uma janela de terminal separada

Executar o passo 6 gera o erro.

Olhando os detalhes do link que você forneceu, parece que os módulos Node gerenciados pelo Yarn não foram convertidos corretamente para pnpm? Fala sobre remover manualmente a pasta ‘node_modules’. No entanto, isso deveria ser resolvido com o novo git pull, certo?

Por favor, veja abaixo o erro do passo 6.

Posso compartilhar o log de erro mencionado se isso ajudar a encontrar a causa.

Vale notar que não tenho um sistema macOS para testar isso. Recentemente, atualizei minha instância local do Discourse em um sistema Arch Linux. Eu esperaria que a forma como as dependências do JavaScript são tratadas fosse semelhante em ambos os sistemas.

Não acho que isso esteja correto. O diretório node_modules não é rastreado pelo git. Os módulos node são instalados quando você executa pnpm install.

Não posso garantir que isso esteja correto, mas se eu estivesse recebendo o erro, removeria e reinstalaria as dependências com:

rm -rf node_modules app/assets/javascripts/*/node_modules

pnpm install

Acho que ember-tracked-storage-polyfill está diretamente em discourse/node_modules, mas deve ser seguro executar o comando completo que postei acima.

Você também pode tentar executar pnpm install com log detalhado se ele retornar erros:

pnpm install --reporter=silent --loglevel=verbose

Acabei de remover e reinstalar as dependências, o comando fornecido funcionou bem. Ele remove e instala o pnpm sem erros.

No entanto, quando executo o bin/ember-cli, ele ainda apresenta o mesmo erro.

Existe alguma maneira de remover completamente minha instalação de desenvolvimento do Discourse e fazer um pull limpo do Git e executar a instalação limpa?

Estou totalmente de acordo em perder os dados do meu ambiente de desenvolvimento.

Você pode executar rm -rf ~/discourse para remover completamente o código-fonte do Discourse. Em seguida, siga o guia de instalação a partir do passo “Clonar Discourse”: Install Discourse on macOS for development.

2 curtidas

Isso resolveu!

Obrigado pela sua paciência, Simon, aprecio você não ter desistido :slight_smile:

2 curtidas

Ótimo! Imagino que o problema estivesse relacionado a ativos em cache que haviam sido compilados anteriormente no diretório /discourse/tmp/cache/assets/sprockets/. Possivelmente o problema poderia ter sido resolvido executando:\n\nrm -rf ~/discourse/tmp/cache/\n\nMas isso é apenas um palpite.

3 curtidas

Não estou tendo muita sorte seguindo estas instruções. Elas não fornecem um ambiente de trabalho, pois recebo um erro 500 quando tento instalar qualquer coisa (plugin, tema, componente de tema). Parece que o assistente não está funcionando corretamente. Já instalei umas 10 vezes e desinstalei e reinstalei as dependências. Quando executo o autospec, recebo muitas falhas, mas pouca informação sobre elas. Qualquer ideia é bem-vinda para que eu possa colocar isso para funcionar.

Obrigado!

Para quem começou a partir do README de Desenvolvimento do Discourse e veio até aqui – se você está configurando suas dependências pela primeira vez, eu recomendo o PostgreSQL 14+, mesmo que o README diga PostgreSQL 13.

Por quê? Quando você configurar seu banco de dados e executar as migrações, ele falhará ao tentar acessar a extensão pgvector em uma das migrações. E instalar o pgvector para o PostgreSQL 13 é um pouco complicado. Mas se você instalar o PostgreSQL 14 e depois o pgvector, tudo funcionará.

Eu recomendo o Homebrew para ambos:

brew install postgresql@14
brew install pgvector

Além disso! Você receberá um erro na primeira vez que executar o servidor Rails se não tiver o ImageMagick instalado. (Eu sei que diz que é opcional no topo deste guia)

Espero que isso ajude… alguém!

3 curtidas

A produção já é 15, eu recomendaria essa ou a 16.

2 curtidas