Discourse kann die im Plugin angegebenen Gems nicht finden

Hallo! Ich entwickle ein Plugin, um Sign-In with Ethereum auf Discourse zu ermöglichen. Das Problem ist, dass ich bei der Installation des Plugins einen Fehler mit einer der Abhängigkeiten (rbsecp256k1) erhalte.

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

Ich frage mich, was passieren könnte, da es in der Entwicklung funktioniert, wenn ich die Abhängigkeiten manuell installiere.

Dieses Gem hat OS-abhängige Komponenten, die gemäß der Dokumentation installiert sein müssen: GitHub - etscrivner/rbsecp256k1: Compiled Ruby wrapper around libsecp256k1 for secp256k1 ECDSA.

Ja, die habe ich bereits installiert. Das Problem tritt auf, wenn mini_portile2 nicht gefunden werden kann, was eine seiner Abhängigkeiten ist.

1 „Gefällt mir“

Wie haben Sie die Abhängigkeit mini_portile2 in Ihrem Plugin deklariert?

1 „Gefällt mir“

Ich hatte das gleiche Problem bei der Installation derselben Gem-Abhängigkeit.

Schau dir das an:

Ich würde mich freuen, wenn es eine direktere Lösung gäbe.

2 „Gefällt mir“

Kannst du das nicht einfach fallen lassen, da es bereits im Discourse-Kern enthalten ist?

1 „Gefällt mir“

Ich meine, ich kann, aber das Problem liegt nicht bei diesem Gem, sondern bei rbsecp256k1. Wenn er versucht zu kompilieren, findet er den mini_portile2-Gem nicht (wie der Fehler besagt: cannot load such file -- mini_portile2 (LoadError) from extconf.rb:3:in <main>').

Sie gehen dieselbe Problematik an wie @fzngagan, siehe seinen Link oben: Having a hard time installing `eth` gem in a plugin in production - #3 by fzngagan, vielleicht können Sie zu seiner Lösung beitragen.

Seine Lösung funktioniert, aber ich halte das nicht für eine gültige Option. Kein Benutzer wäre bereit, all das zu tun, nur um ein Plugin hinzuzufügen. Ich wollte nur wissen, ob jemand einen besseren Ansatz finden könnte (der dem am nächsten kommt, einfach das Repository hinzuzufügen und fertig zu sein). Wie @fzngagan selbst sagte:

Ich würde es lieben, wenn es eine direktere Lösung gäbe.

Und jetzt haben wir zwei Themen zum exakt selben Problem …

1 „Gefällt mir“

Ich habe die Suche eingeschränkt, es scheint nicht mit den Gems zusammenzuhängen, sondern mit extconf.rb. Ich habe es mit ein paar anderen Gems mit einer komplexeren Einrichtung versucht (ruby-magic und libusb), beide funktionieren nicht (aus unterschiedlichen Gründen), gemeinsam haben sie Abhängigkeiten in extconf.rb.

1 „Gefällt mir“

Dieses Problem wurde in den neuesten tests-passed- und stable-Branches von Discourse behoben.

2 „Gefällt mir“

Noch nicht, der PR ist noch nicht zusammengeführt worden.

1 „Gefällt mir“

@RGJ Es gab einige Testfehler, die zuerst behoben werden mussten. Es ist jetzt zusammengeführt.

2 „Gefällt mir“