Discourse ne trouve pas les gems spécifiées dans le plugin

Bonjour ! Je développe un plugin pour activer Sign-In with Ethereum sur Discourse. Le problème est que lors de l’installation du plugin, j’obtiens une erreur avec l’une des dépendances (rbsecp256k1).

ERROR:  Error installing rbsecp256k1:
	ERROR: Failed to build gem native extension.

    current directory: /var/www/discourse/plugins/sdp/gems/2.7.5/gems/rbsecp256k1-5.1.0/ext/rbsecp256k1
/usr/local/bin/ruby -I /usr/local/lib/ruby/site_ruby/2.7.0 -r ./siteconf20220303-1234-gyqjb.rb extconf.rb
extconf.rb:3:in `require': cannot load such file -- mini_portile2 (LoadError)
	from extconf.rb:3:in `<main>'

extconf failed, exit code 1

Je me demande ce qui pourrait se passer puisque cela fonctionne en développement si j’installe manuellement les dépendances.

Cette gemme a des dépendances au niveau du système d’exploitation que vous devez avoir installées, conformément à leur documentation : GitHub - etscrivner/rbsecp256k1: Compiled Ruby wrapper around libsecp256k1 for secp256k1 ECDSA.

Oui, je les ai déjà installés. Le problème survient lorsqu’il ne trouve pas mini_portile2, qui est l’une de ses dépendances.

1 « J'aime »

Comment avez-vous déclaré la dépendance mini_portile2 sur votre plugin ?

1 « J'aime »

J’ai rencontré le même problème lors de l’installation de la même dépendance gem.

Jetez un œil

J’aimerais beaucoup qu’il y ait une solution plus simple.

2 « J'aime »

Ne pouvez-vous pas simplement supprimer cela puisqu’il est déjà dans le cœur de Discourse ?

1 « J'aime »

Je veux dire, je peux, mais le problème ne vient pas de cette gemme, le problème vient de rbsecp256k1, quand il essaie de compiler, il ne trouve pas la gemme mini_portile2 (Comme le dit l’erreur : cannot load such file -- mini_portile2 (LoadError) from extconf.rb:3:in \u003cmain\u003e')

Vous revenez sur le même sujet que @fzngagan, voir son lien ci-dessus : Having a hard time installing `eth` gem in a plugin in production - #3 by fzngagan, peut-être pouvez-vous contribuer à sa solution.

Sa solution fonctionne, mais je ne considère pas cela comme une option valide, aucun utilisateur ne voudrait faire tout cela juste pour ajouter un plugin. Je voulais juste savoir si quelqu’un pouvait penser à une meilleure approche (la plus proche de simplement ajouter le dépôt et c’est bon). comme l’a dit @fzngagan lui-même :

J’adorerais qu’il y ait une solution plus simple.

Et maintenant, nous avons deux sujets sur exactement le même problème…

1 « J'aime »

J’ai affiné la recherche, cela ne semble pas lié aux gems, cela semble lié à extconf.rb. J’ai essayé avec quelques autres gems avec une configuration plus complexe (ruby-magic et libusb), les deux ne fonctionnent pas (pour des raisons différentes), tout ce qu’ils ont en commun sont des dépendances à extconf.rb.

1 « J'aime »

Ce problème a été résolu sur les dernières branches tests-passed et stable de discourse.

2 « J'aime »

Pas encore, la PR n’a pas encore été fusionnée.

1 « J'aime »

@RGJ Il y a eu quelques échecs de test qui devaient être traités en premier. C’est fusionné maintenant.

2 « J'aime »