Discourse não consegue encontrar gems especificadas no plugin

Olá! Estou desenvolvendo um plugin para habilitar o Sign-In with Ethereum no Discourse. O problema é que, ao instalar o plugin, recebo um erro em uma das dependências (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

Gostaria de saber o que pode estar acontecendo, já que funciona em desenvolvimento se eu instalar as dependências manualmente.

Essa gem possui dependências de nível de SO que você precisa ter instaladas, de acordo com a documentação deles: GitHub - etscrivner/rbsecp256k1: Compiled Ruby wrapper around libsecp256k1 for secp256k1 ECDSA.

Sim, eu já tenho esses instalados, o problema acontece quando ele não encontra mini_portile2, que é uma de suas dependências.

1 curtida

Como você declarou a dependência mini_portile2 no seu plugin?

1 curtida

Tive o mesmo problema ao instalar a mesma dependência de gem.

Dê uma olhada

Eu adoraria se houvesse uma solução mais direta.

2 curtidas

Você não pode simplesmente descartar isso, já que já está no core do Discourse?

1 curtida

Quer dizer, eu consigo, mas o problema não é com essa gem, o problema é com rbsecp256k1, quando ele tenta compilar ele não encontra a gem mini_portile2 (Como o erro diz: cannot load such file -- mini_portile2 (LoadError) from extconf.rb:3:in \u003cmain\u003e')

Você está abordando o mesmo assunto que @fzngagan, veja o link dele acima: Having a hard time installing `eth` gem in a plugin in production - #3 by fzngagan, talvez você possa contribuir para a solução dele.

A solução dele funciona, mas não a considero uma opção válida, nenhum usuário estaria disposto a fazer tudo isso apenas para adicionar um plugin. Eu só queria saber se alguém poderia pensar em uma abordagem melhor (o mais próximo possível de apenas adicionar o repositório e pronto). como o próprio @fzngagan disse:

Eu adoraria se houvesse uma solução mais direta.

E agora temos dois Tópicos sobre o exato mesmo problema…

1 curtida

Estou reduzindo as possibilidades, não parece estar relacionado às gems, parece estar relacionado ao extconf.rb. Tentei com algumas outras gems com uma configuração mais complexa (ruby-magic e libusb), ambas não funcionam (por motivos diferentes), tudo o que elas têm em comum são dependências no extconf.rb.

1 curtida

Este problema foi corrigido nos branches tests-passed e stable mais recentes do discourse.

2 curtidas

Ainda não, o PR ainda não foi mesclado.

1 curtida

@RGJ Houve algumas falhas de teste que precisaram ser abordadas primeiro. Já foi mesclado.

2 curtidas