Ciao a tutti. Scusate se la questione è già stata affrontata (non l’ho trovata):
Lo sviluppo di un plugin Discourse sul mio computer locale tende ad essere piuttosto lento. Ogni ricarica della mia app in esecuzione locale (per visualizzare le modifiche al codice) richiede oltre 5 secondi. Quindi, effettuo una modifica in un file html/hbs o js, salvo, poi devo ricaricare l’app [edit: aggiornare il browser] e attendere 5 secondi o più per vedere la modifica.
Esiste un modo per abilitare il hot reload (cioè l’aggiornamento automatico della visualizzazione locale) durante lo sviluppo locale di plugin Discourse?
Sembra che i file CSS vengano aggiornati automaticamente, ma non i file html/hbs o js.
Sto parlando qui dell’aggiornamento del browser e se il hot reload sia disponibile per evitare di doverlo fare. È l’aggiornamento del browser che richiede oltre 5 secondi per visualizzare qualsiasi modifica.
Se devo fermarmi e ricaricare il server (nel caso in cui modifichi plugin.rb, per esempio), ciò probabilmente richiede 60 secondi.
Il hot reload è ovviamente lo standard per lo sviluppo con molte tecnologie oggi (sono più familiare con Angular, che ha questo standard) ed è fantastico per lo sviluppo. Credo che con Rails sia possibile tramite webpack (ma non ne sono sicuro). La mia sensazione è che il hot reload non sia disponibile per lo sviluppo di Discourse, ma volevo verificare perché sarebbe fantastico se lo fosse.
Sembra ottimo, grazie. Per utilizzarlo per lo sviluppo locale, c’è qualcosa che devo fare oltre a scaricare l’ultima versione di Discourse da GitHub sul mio computer?
Ero entusiasta di aggiornare la mia istanza locale di Discourse e ora sto eseguendo la versione 2.8 in locale. Tuttavia, non riesco ancora a far funzionare il hot reload per le modifiche a HTML e JavaScript.
Ecco come eseguo le operazioni:
Vado nella cartella di Discourse in locale
$ redis-server //avvia il server
$ rails s//avvia l’app Rails
$ yarn//da eseguire solo la prima volta, presumo
$ bin/ember-cli//avvia Ember CLI. Il comando ember serve --proxy "http://localhost:3000" mi ha restituito errori per qualche motivo
Questo avvia correttamente l’app su localhost:4200.
Ho aggiunto un plugin alla mia istanza locale di Discourse, che viene visualizzato correttamente su localhost:4200. Tuttavia, se apporto modifiche ai file HTML o JavaScript, queste modifiche vengono visualizzate nell’app in esecuzione in locale solo se ricarico il browser.
Devo fare qualcos’altro per far funzionare il hot reload?
Ciao. Hot-reload è disponibile con ember-cli in Discourse? Sto ancora riscontrando lo stesso problema menzionato nel mio post precedente. Seguendo quelle istruzioni, non ottengo ancora hot-reload (cioè, devo ancora aggiornare il browser per vedere le modifiche a HTML e JavaScript, e l’output di ember-cli nel terminale non sembra registrarsi quando premo salva dopo una modifica al file).
Apprezzerei davvero molto poter disporre del ricaricamento in tempo reale (soprattutto per i file JavaScript). Quando programmo in altri contesti, dove il ricaricamento in tempo reale è lo standard, questa funzionalità rende il processo di codifica molto più veloce e divertente.
“livereload.js avvia una connessione websocket verso Ember CLI. Questo permette a Ember CLI di notificare al browser di attivare un aggiornamento dopo modifiche al JavaScript o agli stili.”
Sono curioso di sapere perché il browser ignora questo: mi chiedo se sia un’opzione nel browser relativa alla sicurezza del sito?
Non ne sono sicuro, ma sono riuscito a ottenere il ricaricamento automatico nel browser in altri contesti o con altri framework. (Non so per quanto riguarda Ember; l’ho usato solo per sviluppare cose relative a Discourse.)
Sono interessato a sapere se il ricaricamento automatico è previsto. Sembra di sì, dalla discussione precedente. In tal caso, mi chiedo se il team di Discourse abbia il ricaricamento automatico e se stiano facendo qualcosa che io non sto facendo.
Sarebbe certamente utile ricevere una comunicazione ufficiale sulla misura in cui il live reload dovrebbe funzionare qui e se vada oltre il CSS sul lato client.
L’aggiornamento automatico della pagina è gestito da Ember CLI. Al momento, le risorse di tema e plugin sono compilate e fornite dall’app Rails, non da Ember CLI. Di conseguenza, le modifiche al tema o ai plugin non aggiornano automaticamente la pagina.
Questo è qualcosa che potremmo migliorare in futuro. Ma per ora, è un comportamento previsto.