Использование «кастомных» Ruby-гемов

Привет! Я уже несколько дней пытаюсь решить эту проблему, так что любая помощь будет очень кстати!

Я создаю форк плагина, который требует использования Ruby-гema discordrb. По какой-то причине самая актуальная версия на discordrb | RubyGems.org | your community gem host — это 3.4.0, которой уже около двух лет, и в ней есть ошибки.

К счастью, существует актуальная версия плагина здесь: GitHub - shardlab/discordrb: Discord API for Ruby · GitHub, но её пока не удалось опубликовать на RubyGems :confused:

Как можно использовать версию этого гема/зависимости с GitHub? Кажется, я перепробовал почти всё.

Вы видели это?: Discord Bot Construction Kit 🤖

Разработка всё ещё ведётся. Недавно мы говорили с разработчиками: следующая версия выйдет, когда будет готова. Среди прочего они работают над поддержкой многопоточности.

Это одно и то же. Просто в документации гема указан только 3.4.0 как последняя версия. Другая ссылка ведёт на официальный репозиторий. Если вы нажмёте на ссылку «Homepage» в вашей первой ссылке, она перенаправит вас на вторую ;). Не знаю, почему в документации гема не указана версия 3.4.1.

Если очень нужно, вы можете ссылаться на репозиторий GitHub: https://stackoverflow.com/questions/2823492/install-gem-from-github-branch

Да, видел! Я почти уверен, что наш плагин является форком форка этого проекта. В нашем случае требуется специфическая логика, поэтому имеет смысл разработать собственную версию.

Как это будет выглядеть в среде Discourse? Мне кажется, я уже перепробовал все способы объявления зависимости через GitHub в файле plugin.rb (посмотрите историю наших коммитов :smile:)

image

Наш сборка не проходит при использовании любого синтаксиса gem, который пытается указать источник из GitHub. Я почти уверен, что проблема связана с тем, как discourse/lib/plugin_gem.rb at main · discourse/discourse · GitHub пытается найти файл .gemspec для плагинов-гемов. Не могли бы вы подсказать шаги для обходного решения?

Привет, @FerrariFlunker!
Вот пример официального плагина, который использует локальную копию гема holidays. Думаю, вы можете использовать аналогичный паттерн в вашем случае.

Вот как он подключается:

Локальная версия репозитория git (примечание: не может быть подмодулем, должна быть настоящей локальной копией) и строки включения libdir сработали идеально! Большое спасибо за вашу помощь, это очень ценно @fzngagan и @merefield :+1:

Надеюсь, эта тема поможет другим найти этот ответ, ведь путь к решению был непростым :smile:

Вы также можете опубликовать gem через GitHub Packages. Publishing a Ruby gem to the GitHub Package Registry | michaelheap.com