Installa Discourse su macOS per sviluppo

Ho alcuni problemi nell’impostazione di discourse per lo sviluppo sul mio Mac M1.

Le gemme fast_xs e gc_tracer non riescono a installarsi con errori quasi simili. Ho incollato qui sotto il messaggio di errore di fast_xs. Qualcuno può aiutarmi?

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

Come è stato risolto?

Quando eseguo

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

dopo aver avviato sia i server Redis che Postgres, ottengo il seguente errore.

fe_sendauth: no password supplied
Impossibile creare il database 'discourse_development'. Controlla la tua configurazione.
rake aborted!

Quando lo faccio senza avviare i miei server Redis e Postgres, ottengo il seguente errore.

bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
Impossibile connettersi a Redis
rake aborted!

Qualcuno può dirmi cosa fare, sono perso.

Grazie

Finora sono riuscito a risolverlo con i seguenti comandi:

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

Si noti che abbiamo deciso di rimuovere entrambi questi gem non essenziali in

e

3 Mi Piace

Dopo aver invocato questa opzione, come si arresta il server?

Questo non sembra più funzionare, sto ricevendo:

fatal: couldn't find remote ref master

Nemmeno la versione per sovrascrivere le modifiche locali (2 post più in basso) funziona.

Qualche idea su come aggiornare un’installazione di sviluppo di Discourse su macOS?

master è stato rinominato in main un po’ di tempo fa. Prova

cd ~/discourse
git pull origin main
4 Mi Piace

Grazie Simon, è d’aiuto.

Sono riuscito a eseguire il comando git ma da qualche parte lungo la strada ho rotto il mio ambiente di sviluppo. Ora ho finito con un ambiente di sviluppo rotto, mostra la mia homepage di sviluppo di Discourse ma nulla sembra funzionare (Nuovo argomento continua a girare).

Qual è il modo più semplice per resettare o fare un’installazione pulita della mia installazione di sviluppo di Discourse?

Ho provato a rieseguire i comandi di installazione all’inizio di questo argomento (si interrompe al comando pnpm install). Ho anche provato a eseguire rake db:drop db:create db:migrate proposto da Arpit in precedenza in questo argomento, senza successo.

Sono riuscito ad aggiornare le mie installazioni di pnpm e node eseguendo npm install -g pnpm e brew install node che mi hanno permesso di rieseguire nuovamente le istruzioni di installazione. Tuttavia, ora sto ricevendo il seguente errore di compilazione:

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'

Hai eseguito pnpm install dopo aver eseguito npm install -g pnpm?

I dettagli sulla modifica all’uso di pnpm per la gestione dei pacchetti sono qui: Discourse core is switching to pnpm for JS package management.

2 Mi Piace

Sì, l’ho fatto, continuo a ricevere l’errore.

Ho eseguito i seguenti passaggi:

  1. Ho aggiornato i pacchetti sul mio Mac (rieseguito lo script iniziale)
  2. Eseguito bundle install
  3. Eseguito pnpm install
  4. Eseguito bundle exec rake db:create bundle exec rake db:migrate RAILS_ENV=test bundle exec rake db:create db:migrate
  5. Eseguito bundle exec rails server
  6. Eseguito bin/ember-cli in una finestra di terminale separata

L’esecuzione del passaggio 6 genera l’errore.

Guardando i dettagli del link che hai fornito, sembra che i moduli Node gestiti da Yarn non siano stati convertiti correttamente in pnpm? Si parla di rimuovere manualmente la cartella ‘node_modules’. Tuttavia, questo dovrebbe essere gestito con il nuovo pull di git, giusto?

Si prega di vedere di seguito l’errore del passaggio 6.

Posso condividere il log dell’errore menzionato se questo può aiutare a trovare la causa.

Vale la pena notare che non ho un sistema macOS su cui testarlo. Tuttavia, ho recentemente aggiornato la mia istanza locale di Discourse su un sistema Arch Linux. Mi aspetterei che il modo in cui vengono gestite le dipendenze javascript sia simile su entrambi i sistemi.

Non credo sia corretto. La directory node_modules non è tracciata da git. I moduli node vengono installati quando esegui pnpm install.

Non posso garantire che sia corretto, ma se stessi riscontrando l’errore, rimuoverei e reinstallerei le dipendenze con:

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

pnpm install

Penso che ember-tracked-storage-polyfill si trovi direttamente in discourse/node_modules, ma dovrebbe essere sicuro eseguire il comando completo che ho postato sopra.

Potresti anche provare a eseguire pnpm install con il logging dettagliato se restituisce errori:

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

Ho appena rimosso e reinstallato le dipendenze, il comando fornito ha funzionato bene. Rimuove e installa pnpm senza errori.

Tuttavia, quando eseguo bin/ember-cli ricevo ancora lo stesso errore.

C’è un modo per rimuovere completamente la mia installazione di sviluppo di Discourse ed eseguire un pull pulito da Git ed eseguire un’installazione pulita?

Non mi dispiace affatto perdere i dati dal mio ambiente di sviluppo.

Potresti eseguire rm -rf ~/discourse per rimuovere completamente il codice sorgente di Discourse. Quindi segui la guida all’installazione dal suo passaggio “Clona Discourse”: Install Discourse on macOS for development.

2 Mi Piace

Ha funzionato!

Grazie per la tua pazienza Simon, apprezzo che tu non ti sia arreso :slight_smile:

2 Mi Piace

Ottimo! Suppongo che il problema fosse correlato agli asset memorizzati nella cache che erano stati precedentemente compilati nella directory /discourse/tmp/cache/assets/sprockets/. Forse il problema poteva essere risolto eseguendo:

rm -rf ~/discourse/tmp/cache/

Questa è solo un’ipotesi, però.

3 Mi Piace

Non sto avendo molta fortuna nel seguire queste istruzioni. Non forniscono un ambiente funzionante poiché ottengo un errore 500 quando provo a installare qualsiasi cosa (plugin, tema, componente-tema). Sembra che la procedura guidata non funzioni correttamente. L’ho installata circa 10 volte e ho disinstallato e reinstallato le dipendenze. Quando eseguo l’autospec, ottengo molti fallimenti ma non molte informazioni su di essi. Qualsiasi idea è benvenuta su come posso rendere operativo questo sistema, funzionalmente.

Grazie!

Per chiunque abbia iniziato dal README di sviluppo di Discourse e sia arrivato qui: se stai configurando le tue dipendenze per la prima volta, ti consiglio PostgreSQL 14+, anche se nel README è indicato PostgreSQL 13.

Perché? Quando configuri il tuo database ed esegui le migrazioni, fallirà quando tenterà di accedere all’estensione pgvector in una delle migrazioni. E installare pgvector per PostgreSQL 13 è un po’ complicato. Ma se installi PostgreSQL 14 e poi pgvector, tutto funzionerà.

Consiglio Homebrew per entrambi:

brew install postgresql@14
brew install pgvector

Inoltre! Riceverai un errore la prima volta che avvii il server Rails se non hai installato ImageMagick. (So che è indicato come opzionale all’inizio di questa guida)

Spero che questo aiuti… qualcuno!

3 Mi Piace

La produzione è già 15, consiglierei quella o la 16.

2 Mi Piace