Rechargement à chaud pour le développement de plugins ?

Bonjour à tous. Désolé si cela a déjà été abordé (je ne l’ai pas trouvé) :

Développer un plugin Discourse sur ma machine locale est généralement assez lent. Chaque rechargement de mon application en cours d’exécution locale (pour voir les modifications de code) prend plus de 5 secondes. Donc, je modifie un fichier HTML/HBS ou JS, j’enregistre, puis je dois recharger l’application [edit : rafraîchir le navigateur] et attendre 5 secondes ou plus pour voir le changement.

Existe-t-il un moyen d’activer le rechargement à chaud (c’est-à-dire la mise à jour automatique de la vue locale) pour le développement de plugins Discourse en local ?

Il semble que les fichiers CSS soient mis à jour automatiquement, mais pas les fichiers HTML/HBS ou JS.

Bien que je surveille pour voir s’il y a des indices, je pense que c’est simplement comme ça. Et d’après ce que j’ai vu, c’est beaucoup pire sur un Mac.

2 « J'aime »

Salut à tous,

Vous ne devriez avoir à redémarrer le serveur que si votre API a changé, c’est-à-dire votre code Ruby on Rails.

Si vous avez seulement modifié les fichiers JavaScript ou HBS, vous pouvez simplement récupérer les modifications en actualisant le navigateur.

Vous aurez remarqué que les changements de fichiers CSS ne nécessitent même pas cela ! :slight_smile:

3 « J'aime »

Je parle ici du rafraîchissement du navigateur et de la disponibilité du hot reload pour éviter d’avoir à le faire. C’est le rafraîchissement du navigateur qui prend plus de 5 secondes pour afficher tout changement.

Si je dois arrêter et recharger le serveur (par exemple lorsque je modifie plugin.rb), cela prend probablement 60 secondes.

Le hot reload est bien sûr la norme pour le développement avec de nombreuses technologies aujourd’hui (je connais surtout Angular, qui suit cette norme), et c’est formidable pour le développement. Je pense qu’avec Rails, c’est possible via webpack (mais je ne suis pas sûr). Mon impression est que le hot reload n’est pas disponible pour le développement de Discourse, mais je voulais vérifier car ce serait formidable si cela l’était.

Vous devez rafraîchir le navigateur pour prendre en compte les fichiers JavaScript mis à jour.

2 « J'aime »

Cela arrivera avec EmberCLI: Coming to a Discourse near you!

8 « J'aime »

En fait, vous pouvez utiliser Ember CLI avec la version master de Discourse dès maintenant pour obtenir ce comportement !

6 « J'aime »

Cela semble super, merci. Pour l’utiliser en développement local, y a-t-il autre chose à faire que de télécharger la dernière version de Discourse depuis GitHub sur mon ordinateur ?

1 « J'aime »

Vous devrez consulter la dernière version de Discourse, puis procéder comme suit :

  1. Démarrer le serveur API : rails s

  2. Démarrer le serveur Ember :

    1. Accéder au bon dossier cd app/assets/javascript/discourse
    2. Installer les paquets yarn
    3. Lancer Ember CLI : ember serve --proxy "http://localhost:3000"

Ensuite, vous pourrez ouvrir http://localhost:4200 et vous devriez pouvoir utiliser Ember CLI avec le rechargement à chaud.

8 « J'aime »

J’étais impatient de mettre à jour mon instance Discourse locale, et j’exécute maintenant la version 2.8 en local. Cependant, je ne parviens pas encore à faire fonctionner le rechargement à chaud (hot reload) pour les modifications HTML et JS.

Voici comment je lance les choses :

Je me place dans le dossier Discourse en local

$ redis-server //démarre le serveur

$ rails s //démarre l’application Rails

$ yarn //à exécuter uniquement la première fois, je suppose

$ bin/ember-cli //démarre Ember CLI. La commande ember serve --proxy "http://localhost:3000" m’a généré des erreurs pour une raison inconnue

Cela permet de faire fonctionner l’application correctement sur localhost:4200.

J’ai ajouté un plugin à mon instance Discourse locale, qui s’affiche bien sur localhost:4200. Cependant, si je modifie des fichiers HTML ou JS, ces changements ne sont visibles sur l’application locale qu’après avoir rafraîchi le navigateur.

Dois-je faire autre chose pour activer le rechargement à chaud ?

2 « J'aime »

Bonjour. Le hot-reload est-il disponible avec ember-cli dans Discourse ? Je rencontre toujours le même problème que j’ai mentionné dans mon précédent message. En suivant ces étapes, je n’obtiens toujours pas le hot-reload (c’est-à-dire que je dois toujours actualiser le navigateur pour voir les modifications apportées au HTML et au JavaScript, et la sortie d’ember-cli dans le terminal ne semble pas réagir lorsque j’enregistre après une modification de fichier).

Le rechargement à chaud continue de ne pas fonctionner pour moi. Y a-t-il autre chose à faire au-delà de ces étapes ?

Ce que je fais, c’est :

./bin/rails s

Dans un terminal, et

./bin/ember_cli

Dans un autre.

Oui. Merci. Je fais de même. Obtiens-tu le rechargement à chaud (c’est-à-dire automatique) pour les fichiers HTML et JS ?

Tu veux dire les fichiers hbs ?

Oui, je ne comprends pas ce que je crois être appelé « liveReload » dans le navigateur, malgré ?:

image

Et la présence de :

<script type="text/javascript" src="http://localhost:4200/_lr/livereload.js?port=4200&amp;host=localhost&amp;path=_lr/livereload"></script>

et

<script src="/ember-cli-live-reload.js" type="text/javascript"></script>

Oui, je parlais bien de fichiers HBS.

Je serais vraiment reconnaissant de pouvoir bénéficier du rechargement à chaud (surtout pour les fichiers JavaScript). Lorsque je code dans d’autres contextes où le rechargement à chaud est la norme, cela rend le processus de développement beaucoup plus rapide et plus agréable.

1 « J'aime »

Quelques informations complémentaires :

ember-cli/ember-cli-inject-live-reload : Plugin Ember CLI qui injecte un script de rechargement en direct dans le contenu HTML (github.com)

« livereload.js établit une connexion WebSocket vers Ember CLI. Cela permet à Ember CLI de notifier le navigateur pour déclencher un rafraîchissement après des modifications de JavaScript ou de styles. »

Je me demande pourquoi le navigateur l’ignore — je me demande s’il s’agit d’une option du navigateur liée à la sécurité du site ?

Je ne suis pas sûr, mais j’ai certainement réussi à activer le rechargement en direct dans le navigateur dans d’autres contextes ou avec d’autres frameworks. (Je ne sais pas pour Ember – je ne l’ai jamais utilisé qu’avec du code pour Discourse.)

Je suis curieux de savoir si le rechargement en direct est prévu. Il semble que oui, d’après la discussion précédente. Dans ce cas, je me demande si l’équipe de Discourse dispose du rechargement en direct et si elle fait quelque chose que je ne fais pas.

1 « J'aime »

La présence de ces scripts est sûrement un signe d’intention ; rien ici n’est dû au hasard, n’est-ce pas ?

Je me demande donc s’il s’agit d’un problème de configuration locale du navigateur ou d’un autre problème de configuration.

Plus d’informations sur livereload.js : livereload/livereload-js : Code JavaScript LiveReload qui communique avec le serveur et gère le rechargement (github.com)

Ce serait certainement agréable d’obtenir une confirmation officielle sur la mesure dans laquelle le rechargement en direct devrait fonctionner ici, et s’il va au-delà du CSS côté client.

1 « J'aime »

Le rafraîchissement automatique de la page est géré par Ember CLI. Pour le moment, les ressources des thèmes et des plugins sont compilées et servies par l’application Rails, et non par Ember CLI. Par conséquent, les modifications apportées aux thèmes ou aux plugins ne rafraîchissent pas automatiquement la page.

Cela pourrait être une amélioration que nous pourrions apporter à l’avenir. Mais pour l’instant, ce comportement est attendu.

5 « J'aime »