Discourse не может найти gems, указанные в плагине

Привет! Я разрабатываю плагин для реализации входа с помощью Ethereum в Discourse. Проблема в том, что при установке плагина возникает ошибка с одним из зависимостей (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

Не могу понять, в чём дело, ведь в режиме разработки всё работает, если зависимости установить вручную.

У этого гема есть зависимости на уровне операционной системы, которые необходимо установить, согласно их документации: 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 отметил:

Я бы очень хотел, чтобы существовало более простое и прямое решение.

Теперь у нас две темы по одной и той же проблеме…

Я сузил круг поиска: похоже, проблема не связана с гемами, а связана с extconf.rb. Я попробовал несколько других гемов со сложной настройкой (ruby-magic и libusb), и оба не работают (по разным причинам). Общим у них являются зависимости в файле extconf.rb.

Эта проблема исправлена в последних ветках tests-passed и stable проекта Discourse.

Ещё нет, PR ещё не принят.

@RGJ Сначала нужно было устранить некоторые сбои тестов. Теперь это слито.