È corretto? Quanto tempo per installare la versione dev?

Sto cercando di installare la versione di sviluppo di Discourse su un droplet Ubuntu 20.04 su DigitalOcean, con il solo scopo di migrare un forum FluxBB verso Discourse, esportarlo e poi importarlo in una versione di produzione di Discourse.

Non ho avuto problemi a installare la versione Docker di produzione come test (senza migrare da FluxBB).

Tuttavia, quando provo a installare la versione di sviluppo di Discourse seguendo questa guida:

scopro che il comando non termina mai quando eseguo:

bundle exec rake autospec

Dopo circa 30 minuti di attesa per il completamento, la mia sessione remota va in timeout.

Inoltre, ricevo un’enorme quantità di errori; purtroppo non li ho a portata di mano, ma sono tutti dello stesso tipo: una certa funzione restituisce sempre “nil”.

Poiché non so cosa faccia questo comando o se sia necessario (le istruzioni dicono semplicemente “provare a eseguire gli spec”, senza spiegare cosa facciano o perché eseguirli), ho proceduto con il tentativo del comando successivo:

bundle exec rails server --binding=0.0.0.0

E noto che anche questo impiega un tempo infinito e stampa una serie di messaggi nel terminale che non riesco a capire: potrebbero essere errori o meno.

La mia domanda è: questo è un comportamento atteso o sto facendo qualcosa di sbagliato? Quanto tempo ci si dovrebbe aspettare che impieghino questi comandi per completarsi?

È possibile migrare il forum FluxBB utilizzando la versione Docker/produzione di Discourse senza dover usare la versione di sviluppo? Al momento non ho ancora un sito di produzione, quindi non mi preoccupa romperlo: posso distruggerlo e ricrearlo quando voglio.

1 Mi Piace

Questo significa che il server è in esecuzione. E naturalmente continuerà a funzionare finché non premi Control+C o non chiudi il terminale.

Le informazioni vengono stampate nel terminale all’infinito a meno che tu non fermi il server.

Entro pochi secondi dall’avvio, la pagina web sarà disponibile nel tuo browser.

Stai collegandoti sulla porta corretta nel tuo browser? Di solito è la 3000.

1 Mi Piace

Ci sono diversi argomenti ‘how-to’ sull’esecuzione di importazioni sui server di produzione. Potresti usare uno di questi come guida per eseguire lo script che desideri.

Sembra che tu abbia installato l’ambiente di sviluppo e che dovresti eseguire lo script lì.

1 Mi Piace

Non vedo nulla nel browser. Se eseguo ‘top’ dal terminale, vedo un processo ruby in esecuzione.

Se l’output del terminale continua all’infinito dopo aver eseguito

bundle exec rails server --binding=0.0.0.0

non dovrebbe essere specificato esplicitamente nella documentazione? Di solito, quando seguo una guida pratica, mi aspetto che un comando esegua un’azione, si concluda e mostri un messaggio che conferma il completamento dell’installazione e che tutto è pronto.

1 Mi Piace

Ci sono diversi argomenti su come eseguire importazioni su server di produzione.

Dove potrebbero trovarsi? L’unico che vedo per FluxBB dice esplicitamente di farlo su un’installazione di sviluppo:

Immagino sia considerato buon senso che, se si avvia un server web, non sia previsto che si fermi a meno che l’amministratore non lo desideri. I server web sono generalmente destinati a servire pagine giorno dopo giorno… ma certo, qualcuno potrebbe aggiungere tale chiarimento. Chiunque può inviare proposte di miglioramento alla guida tramite PR.

1 Mi Piace

Ma è senso comune che quel comando avvii un server web? Dice semplicemente ‘rails server’, il che non implica necessariamente un server web. Quando avvii un server web Apache, torni immediatamente al prompt dei comandi; non continua a stampare informazioni nel Terminale all’infinito…

Rails è un framework per applicazioni web. Non credo sia giusto confrontarlo direttamente con Apache.

Mi piace il fatto che tu possa vederlo lavorare attivamente. Quando si ferma, di solito c’è qualcosa che non va! L’output può essere utile in alcune circostanze, specialmente in sviluppo. Puoi modificare la quantità di informazioni visualizzate tramite la configurazione dell’ambiente.

A proposito, secondo la documentazione, Rails può essere “daemonizzato” con l’opzione -d. Sentiti libero di indagare sul motivo per cui ciò non sembra funzionare nell’installazione standard; potrebbe esserci una limitazione introdotta. Per questo, è meglio rivolgersi al Team.

1 Mi Piace

Ciao @epsteindidnt,

Quando prenderai confidenza con lo sviluppo in Rails, se sei come me, scoprirai che ciò che descrivi come “vomitare output nel Terminale all’infinito” diventerà uno dei tuoi migliori amici.

Ad esempio, sto attualmente sviluppando un’applicazione Rails per un cliente con cui stiamo trasformando tutta la loro logica di business legacy (di molti decenni fa) in Rails. Ho addirittura comprato un nuovo monitor proprio per poter vedere quel “vomito di output nel Terminale all’infinito” (le tue parole), perché quelle informazioni sono oro colato per uno sviluppatore.

Oltre al fantastico log del server Rails, che fornisce dettagli intricati su ciò che sta accadendo, c’è anche un altro “migliore amico dello sviluppatore”: la console di Rails!

Quando scrivo codice per Rails, sostanzialmente abbozzo in VSC e poi copio e incollo frammenti nella console di Rails per assicurarmi che tutto funzioni come previsto.

Durante il debugging, inserisco nel codice istruzioni Ruby di tipo print (come p o puts) e osservo cosa succede nel “flusso infinito di informazioni preziose del log del server Rails” sullo schermo. Quasi tutti i miei errori vengono risolti in questo modo! Come dicevo, ho recentemente comprato un nuovo monitor curvo da gaming stand-alone proprio per poter vedere le informazioni del log del server Rails che ti infastidiscono :slight_smile:

Leggendo i tuoi post, sembra che tu sia un po’ come me all’inizio di quest’anno, mentre migravo verso un’applicazione Rails senza alcuna precedente esperienza di sviluppo in Rails. All’inizio, anch’io provavo fastidio per Rails (forse anche più di te); e ora, nove mesi dopo, sviluppo esclusivamente in Rails ogni giorno per clienti (il mio limite è metà tempo per il lavoro con i clienti, dato che sono semi-pensionato) e ho interrotto tutto il precedente lavoro di sviluppo in PHP. Onestamente, ho scoperto una nuova passione per Rails (e Ruby), e molto forte. Meglio tardi che mai, come si suol dire!

Per quanto riguarda Apache2, Apache non fornisce i dettagli intricati su ciò che accade dietro le quinte in un’applicazione come fa Rails. Eseguo Apache2 come proxy inverso davanti a tutte le mie applicazioni Rails e, per essere sincero, non ricordo quando sia stata l’ultima volta che ho guardato un file di log di Apache; perché faccio tutto il debugging usando il log del server Rails che al momento ti infastidisce :slight_smile:

Concludendo, spero sinceramente che una diversa prospettiva da parte di qualcuno che ha “migrato un forum verso Rails” possa aiutare in qualche piccolo modo. Per me, essere spinto a lasciare le applicazioni web LAMP e passare alle applicazioni web Rails è stata una delle migliori “cose tecnologiche” che mi siano accadute (personalmente) nel 2020.

Buone feste!

1 Mi Piace

Anche io sono rimasto un po’ turbato da questo ultimamente. Ecco cosa ho capito oggi:

L’output in un terminale rails s mostrerà un sacco di query all’avvio, ma poi include anche l’output dei job sidekiq di discourse (almeno lo fa nella configurazione di sviluppo docker). Quindi, se stai eseguendo un’importazione molto grande, otterrai una coda sidekiq molto grande di job di post-elaborazione che potrebbero richiedere molto tempo per essere completati. Penso che questi siano job non essenziali, ad esempio il caricamento delle cache, che non sembrano impedirti di navigare sul sito prima che siano finiti.

Questo mi stava confondendo moltissimo perché ho fatto una grande importazione, poi sono uscito da quella e ho reinizializzato il database per fare una piccola importazione di prova, e continuava a elaborare all’infinito query relative al database grande non più esistente! La soluzione è stata svuotare le code sidekiq usando una console rails.

Troppo tardi per aiutarti, ma ho pensato di condividerlo.