Discourse no puede encontrar las gemas especificadas en el plugin

¡Hola! Estoy desarrollando un plugin para habilitar Sign-In with Ethereum en Discourse. El problema es que al instalar el plugin obtengo un error con una de las dependencias (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

Me pregunto qué podría estar pasando, ya que funciona en desarrollo si instalo manualmente las dependencias.

Esa gema tiene dependencias a nivel de sistema operativo que necesitas tener instaladas, según su documentación: GitHub - etscrivner/rbsecp256k1: Compiled Ruby wrapper around libsecp256k1 for secp256k1 ECDSA.

Sí, ya tengo instalados esos, el problema ocurre cuando no puede encontrar mini_portile2, que es una de sus dependencias.

1 me gusta

¿Cómo declaró la dependencia mini_portile2 en su plugin?

1 me gusta

He experimentado el mismo problema al instalar la misma dependencia de gem.

Échale un vistazo

Me encantaría que hubiera una solución más sencilla.

2 Me gusta

¿No puedes simplemente eliminar eso ya que ya está en el núcleo de Discourse?

1 me gusta

Quiero decir, puedo, pero el problema no es con esa gema, el problema es con rbsecp256k1, cuando intenta compilar no encuentra la gema mini_portile2 (Como dice el error: cannot load such file -- mini_portile2 (LoadError) from extconf.rb:3:in \u003cmain\u003e')

Estás repitiendo lo mismo que @fzngagan, mira su enlace de arriba: Having a hard time installing `eth` gem in a plugin in production - #3 by fzngagan, quizás puedas contribuir a su solución.

Su solución funciona, pero no la considero una opción válida, ningún usuario estaría dispuesto a hacer todo eso solo para agregar un complemento. Solo quería saber si alguien podía pensar en un mejor enfoque (lo más cercano a simplemente agregar el repositorio y listo). como dijo el propio @fzngagan:

Me encantaría que hubiera una solución más directa.

Y ahora tenemos dos temas sobre el mismo problema…

1 me gusta

Lo he estado reduciendo, no parece estar relacionado con los gems, parece estar relacionado con extconf.rb. Probé con otros pocos gems con una configuración más compleja (ruby-magic y libusb), ambos no funcionan (por diferentes razones), todo lo que tienen en común son dependencias en extconf.rb.

1 me gusta

Este problema se ha corregido en las últimas ramas tests-passed y stable de discourse.

2 Me gusta

Todavía no, la PR no se ha fusionado todavía.

1 me gusta

@RGJ Hubo algunas pruebas fallidas que debían abordarse primero. Ya está fusionado.

2 Me gusta