Instala Discourse en macOS para desarrollo

Tengo algunos problemas para configurar Discourse para el desarrollo en mi Mac M1.

Los gems fast_xs y gc_tracer fallan al instalarse con errores casi similares. He pegado el mensaje de error de fast_xs a continuación. ¿Alguien podría ayudar?

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```

¿Cómo se resolvió esto?

Al ejecutar

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

después de iniciar los servidores Redis y Postgres, obtengo el siguiente error.

fe_sendauth: no password supplied
No se pudo crear la base de datos 'discourse_development'. Por favor, comprueba tu configuración.
rake aborted!

Cuando hago esto sin iniciar mis servidores Redis y Postgres, obtengo el siguiente error.

bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
No se pudo conectar a Redis
rake aborted!

¿Alguien puede decirme qué hacer? Estoy perdido.

Gracias

Hasta ahora he logrado resolverlo con los siguientes 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

Tenga en cuenta que hemos decidido eliminar estas dos gemas no esenciales en

y

3 Me gusta

Después de invocar esta opción, ¿cómo se detiene el servidor?

Esto ya no parece funcionar, estoy recibiendo:

fatal: couldn't find remote ref master

Tampoco funciona la versión para sobrescribir cambios locales (2 publicaciones más abajo).

¿Alguna idea sobre cómo actualizar una instalación de desarrollo de Discourse en macOS?

master se renombró a main hace un tiempo. Intenta

cd ~/discourse
git pull origin main
4 Me gusta

Gracias Simon, eso ayuda.

Pude ejecutar el comando git pero en algún momento rompí mi entorno de desarrollo. Ahora terminé con un entorno de desarrollo roto, muestra mi página de inicio de desarrollo de Discourse pero nada parece funcionar (Nuevo Tema sigue girando).

¿Cuál es la forma más fácil de restablecer o realizar una instalación limpia de mi instalación de desarrollo de Discourse?

Intenté volver a ejecutar los comandos de instalación al principio de este tema (se interrumpe en el comando pnpm install). También intenté ejecutar rake db:drop db:create db:migrate propuesto por Arpit anteriormente en este tema, tampoco tuve éxito.

Pude actualizar mis instalaciones de pnpm y node ejecutando npm install -g pnpm y brew install node, lo que me permitió volver a ejecutar las instrucciones de instalación. Sin embargo, ahora estoy recibiendo el siguiente error de compilación:

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'

¿Ejecutaste pnpm install después de ejecutar npm install -g pnpm?

Los detalles sobre el cambio a usar pnpm para la gestión de paquetes están aquí: Discourse core is switching to pnpm for JS package management.

2 Me gusta

Sí, lo hice, todavía me aparece el error.

Seguí los siguientes pasos:

  1. Actualicé los paquetes en mi Mac (volví a ejecutar el script inicial)
  2. Ejecuté bundle install
  3. Ejecuté pnpm install
  4. Ejecuté bundle exec rake db:create bundle exec rake db:migrate RAILS_ENV=test bundle exec rake db:create db:migrate
  5. Ejecuté bundle exec rails server
  6. Ejecuté bin/ember-cli en una ventana de terminal separada

Al ejecutar el paso 6, aparece el error.

Al revisar los detalles del enlace que proporcionaste, siento que los módulos de Node administrados por Yarn no se convierten correctamente a pnpm. Habla de eliminar manualmente la carpeta ‘node_modules’. Sin embargo, esto debería estar resuelto con el nuevo git pull, ¿verdad?

Por favor, vean el error del paso 6 a continuación.

Puedo compartir el registro de error mencionado si eso ayuda a encontrar la causa.

Vale la pena señalar que no tengo un sistema macOS para probar esto. Sin embargo, recientemente actualicé mi instancia local de Discourse en un sistema Arch Linux. Esperaría que la forma en que se manejan las dependencias de JavaScript sea similar en ambos sistemas.

No creo que eso sea correcto. El directorio node_modules no es rastreado por git. Los módulos de node se instalan cuando ejecutas pnpm install.

No puedo garantizar que esto sea correcto, pero si estuviera recibiendo el error, eliminaría y reinstalaría las dependencias con:

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

pnpm install

Creo que ember-tracked-storage-polyfill está directamente en discourse/node_modules, pero debería ser seguro ejecutar el comando completo que publiqué anteriormente.

También podrías intentar ejecutar pnpm install con registro detallado si devuelve errores:

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

Acabo de eliminar y reinstalar las dependencias, el comando proporcionado funcionó bien. Elimina e instala pnpm sin errores.

Sin embargo, cuando ejecuto bin/ember-cli todavía me da el mismo error.

¿Hay alguna forma de eliminar completamente mi instalación de desarrollo de Discourse y hacer un pull limpio de Git y ejecutar la instalación limpia?

Estoy totalmente de acuerdo con perder los datos de mi entorno de desarrollo.

Podrías ejecutar rm -rf ~/discourse para eliminar por completo el código fuente de Discourse. Luego, sigue la guía de instalación desde su paso “Clonar Discourse”: Install Discourse on macOS for development.

2 Me gusta

¡Eso lo solucionó!

Gracias por tu paciencia, Simon, aprecio que no te hayas rendido :slight_smile:

2 Me gusta

¡Genial! Supongo que el problema estaba relacionado con activos cacheados que se habían compilado previamente en el directorio /discourse/tmp/cache/assets/sprockets/. Posiblemente el problema se podría haber resuelto ejecutando:

rm -rf ~/discourse/tmp/cache/

Aunque esto es solo una suposición.

3 Me gusta

No estoy teniendo mucha suerte siguiendo estas instrucciones. No proporcionan un entorno de trabajo ya que obtengo un error 500 cuando intento instalar cualquier cosa (plugin, tema, componente de tema). Parece que el asistente no está funcionando correctamente. Lo he instalado unas 10 veces y he desinstalado y reinstalado las dependencias. Cuando ejecuto el autospec, obtengo muchos fallos, pero no mucha información sobre ellos. ¡Se aceptan ideas sobre cómo puedo poner esto en funcionamiento, funcionalmente!

¡Gracias!

Para cualquiera que haya comenzado con el README de desarrollo de Discourse y haya llegado aquí: si está configurando sus dependencias por primera vez, le recomiendo PostgreSQL 14+, aunque dice PostgreSQL 13 en el README.

¿Por qué? Cuando configure su base de datos y ejecute las migraciones, fallará cuando intente acceder a la extensión pgvector en una de las migraciones. E instalar pgvector para PostgreSQL 13 es un poco complicado. Pero si instala PostgreSQL 14 y luego pgvector, todo funcionará.

Recomiendo Homebrew para ambos:

brew install postgresql@14
brew install pgvector

¡Además! Obtendrá un error la primera vez que ejecute el servidor de Rails si no tiene ImageMagick instalado. (Sé que dice que es opcional en la parte superior de esta guía)

Espero que esto ayude… a alguien.

3 Me gusta

La producción ya es 15, recomendaría esa o la 16.

2 Me gusta