Création d'un plugin pour override QUERY_RESULT_MAX_LIMIT

J’ai naïvement tenté de créer un plugin (ce que je n’ai jamais fait, à part suivre le tutoriel sur les plugins il y a quelques années) pour remplacer les limites définies dans le module DataExplorer, mais je n’arrive pas à le faire fonctionner.

Suis-je sur la bonne voie ou est-ce une approche complètement erronée ?

Remarque : Je définis QUERY_RESULT_DEFAULT_LIMIT à 1 pour faciliter le test de l’application des limites personnalisées.

Je déconseille un plugin ici.

Au lieu de cela, soumettez une PR pour ajouter un GlobalSetting (qui est pris en charge par l’environnement).

5 « J'aime »

Apparemment, cela n’a pas été une priorité élevée pour qui que ce soit au cours des 2 dernières années, mais j’en avais besoin aujourd’hui et je l’ai résolu en modifiant le fichier manuellement à l’intérieur du conteneur.

Une solution de contournement consiste en quelque chose comme ce qui suit dans app.yml :

  after_bundle_exec:
   - replace:
        filename: "/var/www/discourse/plugins/discourse-data-explorer/plugin.rb"
        from: /QUERY_RESULT_MAX_LIMIT = 10_000/
        to: QUERY_RESULT_MAX_LIMIT = 100_000

Mais il semble que la PR ressemblerait à l’ajout de ceci à plugin.rb :

GlobalSetting.add_default(:query_result_max_limit, 10000)

et ensuite changer le module ci-dessus en quelque chose comme

  QUERY_RESULT_MAX_LIMIT = GlobalSetting.query_result_max_limit || 10_000

Est-ce tout ce qu’il faudrait ?

2 « J'aime »

Fermer…

J’arrêterais d’utiliser la constante et utiliserais plutôt GlobalSetting.query_result_max_limit partout. Vous configurez déjà une valeur par défaut, pourquoi la configurer deux fois.

Mais il doit y avoir un défaut s’ils ne définissent pas le GlobalSetting ?

Vous le définissez dans plugin.rb

OHHHHHH. Je suppose que « add_default » ajoute bien un défaut. :person_shrugging:

Oups.

Donc, ajoutez le GlobalSetting par défaut et remplacez toutes les références à l’ancienne constante par le GlobalSetting.

Compris.

Je vais voir ce que je peux faire.