Works, thank you!
您好 @michaeld @RGJ,我不确定这里是否是提问的正确地方,但我在使用 https://github.com/communiteq/discourse-siwe-auth 和 https://github.com/spruceid/discourse-siwe-auth 存储库时遇到了类似的 ffi 问题。
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)
我的 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
目前,我将尝试分叉您的存储库并更新版本,因为我有一个迁移此 Discourse 实例的截止日期。我只是想告知您此事。
另外,我想知道该插件是否由 Communiteq 积极维护。
提前致谢!
不看代码……
问题会不会是 ffi 现在是核心的一部分,所以你不需要添加它?
我对 Ruby 并不太了解,所以无法对该插件发表评论,但我可以确认,在分叉的存储库中将 ffi 升级到 1.17.2 可以完美运行。升级是指将 plugin.rb 更改为:
gem 'ffi', '1.17.2', require: false
这对我来说是有效的,但我真的很想使用官方维护的插件,而不是我自己的分叉。
我的建议是完全移除 gem。当它生效时,提交一个 PR 来移除那一行。
我们更像是被动维护。官方存储库在 spruceid,但由于我们运行了多个使用该插件的网站,实际上是我们先修复它。这次你抢先了,它仍然在我们 3.5 的插件更改列表中。
如果没有人向官方存储库提交 PR,我将在本周末或下周末之前处理这个问题。
我希望把打开 PR 的任务留给你,因为你可能有一些我不知道的关于插件的考虑或测试,因为我对此服务知之甚少,我正在迁移它。
感谢您在此主题上的帮助、信息和贡献。
我已经修复了该插件——确实只是需要移除显式的 ffi gem 包含。
我也向原始仓库提交了一个拉取请求。只要该拉取请求尚未被接受,您就可以使用 https://github.com/communiteq/discourse-siwe-auth 而不是原始仓库。
我也会暂时将 OP 中的链接更改为这个。
我看这个插件.discourse-compatibility 文件显示支持 < 3.2.0.beta2-dev 版本,现在最新的discourse版本使用起来这个插件会有什么问题吗?
由于该文件指示了向后兼容性,因此 .plugin-compatibility 文件中不存在最新版本是一件好事。
