Discourse가 플러그인에 지정된 gems를 찾을 수 없음

안녕하세요! 저는 Discourse에서 이더리움으로 로그인(Sign-In with Ethereum)을 가능하게 하는 플러그인을 개발하고 있습니다. 문제는 플러그인을 설치할 때 의존성 중 하나인(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

수동으로 의존성을 설치하면 개발 환경에서는 작동하므로, 어떤 일이 일어나고 있는지 궁금합니다.

해당 지음의 문서에 따르면, OS 수준의 종속성이 있으며 이를 설치해야 합니다: GitHub - etscrivner/rbsecp256k1: Compiled Ruby wrapper around libsecp256k1 for secp256k1 ECDSA. · GitHub

네, 이미 설치되어 있어요. 문제는 mini_portile2를 찾을 수 없을 때 발생하는데, 이건 그 의존성 중 하나거든요.

플러그인에서 mini_portile2 종속성을 어떻게 선언했나요?

같은 gem 의존성을 설치할 때 동일한 문제를 경험했습니다.

다음 링크를 확인해 주세요.

더 직관적인 해결책이 있다면 좋겠습니다.

Discourse 코어에 이미 포함되어 있으므로 이 줄을 삭제하면 안 될까요?

제 말은, 저는 할 수 있지만 문제는 그 게머가 아니라 rbsecp256k1에 있다는 겁니다. 빌드를 시도할 때 mini_portile2 게머를 찾지 못하거든요. (에러 메시지에 이렇게 나와 있습니다: cannot load such file -- mini_portile2 (LoadError) from extconf.rb:3:in <main>')

@fzngagan 님과 동일한 문제를 다루고 있으니, 위 링크를 확인해 주세요: Having a hard time installing `eth` gem in a plugin in production - #3 by fzngagan. 그의 해결책에 기여할 수 있을지도 모릅니다.

그의 해결책은 작동하지만, 나는 그것을 유효한 옵션으로 보지 않습니다. 사용자는 플러그인을 추가하기 위해 그 모든 과정을 거치기 원하지 않을 것입니다. 단순히 저장소를 추가하면 바로 사용 가능한 가장 가까운 더 나은 접근 방식이 있는지 알고 싶을 뿐입니다. @fzngagan 본인이 말했듯이:

더 직관적인 해결책이 있다면 좋겠습니다.

그리고 이제 완전히 동일한 문제에 대한 두 개의 주제가 생겼네요 …

범위를 좁혀본 결과, gem과는 관련이 없어 보이고 extconf.rb와 관련이 있는 것 같습니다. 더 복잡한 설정을 가진 다른 몇 가지 gem(ruby-magic과 libusb)으로 시도해 봤는데, 둘 다 작동하지 않았습니다(각각 다른 이유). 공통점으로는 extconf.rb에 대한 의존성이 있다는 점입니다.

이 문제는 discourse의 최신 tests-passed 및 stable 브랜치에서 수정되었습니다.

아직 아닙니다. PR이 아직 병합되지 않았습니다.

@RGJ 먼저 해결해야 할 테스트 실패가 있었습니다. 이제 병합되었습니다.