Funciona, obrigado!
Olá @michaeld @RGJ, não tenho certeza se este é o lugar certo para perguntar, mas estou tendo um problema semelhante com ffi ao usar o repositório em https://github.com/communiteq/discourse-siwe-auth e também em https://github.com/spruceid/discourse-siwe-auth.
I, [2025-08-26T12:22:42.475531 #1] INFO -- :
I, [2025-08-26T12:22:42.475839 #1] INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::LoadError: can't activate ffi-1.17.1-x86_64-linux-gnu, already activated ffi-1.17.2-x86_64-linux-gnu (Gem::LoadError)
/var/www/discourse/lib/plugin_gem.rb:25:in `load'
/var/www/discourse/lib/plugin/instance.rb:861:in `gem'
/var/www/discourse/plugins/discourse-siwe-auth/plugin.rb:23:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:806:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:806:in `activate!'
/var/www/discourse/lib/discourse.rb:344:in `block in activate_plugins!'
/var/www/discourse/lib/discourse.rb:341:in `each'
/var/www/discourse/lib/discourse.rb:341:in `activate_plugins!'
/var/www/discourse/config/application.rb:196:in `block in <class:Application>'
/var/www/discourse/lib/plugin.rb:6:in `initialization_guard'
/var/www/discourse/config/application.rb:196:in `<class:Application>'
/var/www/discourse/config/application.rb:62:in `<module:Discourse>'
/var/www/discourse/config/application.rb:61:in `<top (required)>'
/var/www/discourse/Rakefile:7:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.3.0/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
(See full trace by running task with --trace)
Seção de hooks da minha aplicação auto-hospedada do Discourse:
hooks:
before_code:
- exec:
cmd:
- gem install rubyzip
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/communiteq/discourse-siwe-auth.git
- git clone https://github.com/discourse/discourse-code-review.git
Por enquanto, vou tentar fazer um fork do seu repositório e atualizar a versão, pois tenho um prazo para migrar esta instância do Discourse. Só queria te informar sobre isso.
Também gostaria de saber se o plugin é ativamente mantido pela Communiteq.
Agradeço desde já!
Sem olhar o código…
O problema pode ser que o ffi agora está no core e você não precisa adicioná-lo?
Não sou muito fã de Ruby, então não posso fazer uma declaração sobre o plugin, mas posso confirmar que atualizar o ffi para 1.17.2 no repositório forkado funciona muito bem, e com atualizar eu quero dizer mudar o plugin.rb com:
gem 'ffi', '1.17.2', require: false
Isso funcionou para mim, mas eu realmente gostaria de usar o plugin mantido oficialmente em vez do meu próprio fork.
Minha sugestão foi remover a gem completamente. E quando isso funcionar, envie um PR com essa linha removida.
Nós o mantemos de forma mais passiva. O repositório oficial está em spruceid, mas como executamos vários sites usando o plugin, na prática somos nós que o corrigimos primeiro. Desta vez, você nos antecipou, ele ainda está em nossa lista de plugins para alterar para a 3.5.
Se ninguém fizer um PR para o repositório oficial, eu cuidarei disso até o final desta semana ou o início da próxima.
Prefiro deixar a tarefa de abrir o PR para você, pois você provavelmente tem considerações ou testes em relação ao plugin que eu desconheço, já que sei muito pouco sobre este serviço, pois estou em processo de migração dele.
Obrigado pela sua ajuda, informações e contribuições sobre este tópico.
Eu corrigi o plugin - na verdade, foi apenas uma questão de remover a inclusão explícita da ffi gem.
Também fiz um pull request para o repositório original. Enquanto o PR não for aceito, você pode usar https://github.com/communiteq/discourse-siwe-auth em vez do repositório original.
Alterarei o link no OP para este por enquanto também.
Eu estou vendo este arquivo de plugin .discourse-compatibility que mostra suporte para versões < 3.2.0.beta2-dev. Quais problemas podem ocorrer ao usar este plugin com a versão mais recente do Discourse?
Como esse arquivo indica compatibilidade retroativa, a ausência de versões recentes no arquivo .plugin-compatibility é uma coisa boa.
