동작합니다. 감사합니다!
안녕하세요 @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 앱의 훅(Hook) 섹션:
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
이 방법으로 저에게는 잘 작동했지만, 제 포크 대신 공식적으로 유지보수되는 플러그인을 사용하고 싶습니다.
제안은 그 지문을 아예 제거하는 것이었습니다. 그리고 그것이 작동하면, 해당 지문을 삭제한 PR을 제출하세요.
우리는 더 비적극적으로 유지 관리하는 편입니다. 공식 저장소는 spruceid에 있지만, 우리는 이 플러그인을 사용하는 여러 사이트를 운영하기 때문에 실제로는 우리가 먼저 수정하는 경우가 많습니다. 이번에는 여러분이 먼저 찾아주셨네요. 여전히 3.5 버전에서 변경할 플러그인 목록에 올라 있습니다.
누군가 공식 저장소에 PR을 만들지 않는다면, 이번 주 말이나 다음 주 초까지 제가 처리하겠습니다.
이 서비스에 대해 제가 아는 것이 거의 없고, 현재 이 서비스를 마이그레이팅하는 과정에 있기 때문에, 플러그인과 관련하여 제가 알지 못하는 고려 사항이나 테스트가 있을 수 있으므로 PR을 여는 작업은 귀하가 해 주시는 편이 좋겠습니다.
이 주제에 대해 도움을 주시고, 정보를 공유해 주시며, 기여해 주셔서 감사합니다.
플러그인을 수정했습니다. 실제로는 명시적인 ffi gem 포함을 제거하는 것만으로도 해결되었습니다.
원본 저장소에 대한 풀 리퀘스트도 작성했습니다. PR이 승인되기 전까지는 원본 저장소 대신 https://github.com/communiteq/discourse-siwe-auth를 사용할 수 있습니다.
잠시 동안 OP의 링크도 이 주소로 변경해 두겠습니다.
이 플러그인의 .discourse-compatibility 파일에는 3.2.0.beta2-dev 미만 버전을 지원한다고 표시되어 있습니다. 현재 최신 Discourse 버전에서 이 플러그인을 사용할 경우 문제가 발생합니까?
해당 파일은 후방 호환성을 나타내므로, .plugin-compatibility 파일에 최신 버전이 없는 것은 좋은 일입니다.
v1이 더 이상 작동하지 않기 때문에 플러그인을 WalletConnect v2를 사용하도록 업데이트했습니다.
다시 한번 강조하지만, 원래 저장소가 아닌 https://github.com/communiteq/discourse-siwe-auth를 사용하세요.
새 버전
GitHub - signinwithethereum/discourse-siwe-auth: Discourse plugin for SIWE authentication · GitHub 에 새로운 버전으로 크게 개선된 포크가 있습니다.
즉시 전환해야 합니다 
기존 버전의 플러그인을 사용 중이라면, 이전 버전에서 여러 보안 취약점이 발견되었으므로 가능한 한 빨리 이 버전으로 전환해 주세요.
