使用“自定义”ruby gem

你好!我为此苦苦挣扎了好几天,所以任何帮助都将不胜感激!

我正在开发一个插件的 fork,该插件需要 discordrb ruby gem。无论出于何种原因,discordrb | RubyGems.org | your community gem host 上最新版本是 3.4.0,这大约是两年前的版本,而且存在 bug。

幸运的是,这里有一个插件的最新版本 https://github.com/shardlab/discordrb,但它一直无法发布到 RubyGems :confused:

我该如何使用这个 gem/依赖项的 github 版本?我觉得我已经尝试了几乎所有方法。

1 个赞

看过吗?: Discord Bot Construction Kit 🤖

它仍在积极开发中。最近与开发人员交谈,下一个版本将在“完成后”发布。除其他事项外,他们正在处理线程支持。

它们是同一回事。只是 gem 文档只声称 3.4.0 是最新的。另一个是官方仓库。如果您点击第一个链接上的“主页”链接,它会带您到第二个链接 :wink: 我不知道为什么 gem 文档没有列出 3.4.1。

如果您确实需要,可以引用一个 GitHub 仓库:https://stackoverflow.com/questions/2823492/install-gem-from-github-branch

1 个赞

我看到了!我敢肯定,我们的插件是那个插件的一个分支的再分支。在我们的案例中,我们需要一些特定的逻辑,所以开发我们自己的版本是有意义的。

在 Discourse 环境中这会是什么样子?我觉得我已经尝试了在 plugin.rb 中通过 GitHub 声明依赖关系的每种方法(查看我们的提交历史 :smile:

image

我的构建在尝试指向 GitHub 源的每种 gem 语法中都失败了。我非常确定这与 discourse/lib/plugin_gem.rb at main · discourse/discourse · GitHub 如何尝试查找插件 gem 的 .gemspec 文件有关。你能给我一个变通方法的步骤吗?

1 个赞

你好 @FerrariFlunker
这是一个使用本地副本 holidays gem 的官方插件示例。我认为你也可以在你的情况中使用类似的模式。

这是它的包含方式。

1 个赞

本地版本的 git 仓库(注意:不能是子模块,必须是真正的本地副本)和 libdir 包含行完美运行!非常感谢您的帮助,非常感激 @fzngagan@merefield :+1:

希望这个话题能帮助其他人找到这个答案,这真是一段艰难的探索过程 :smile:

2 个赞

您也可以通过 GitHub Packages 发布 gem。Publishing a Ruby Gem to the GitHub Package Registry | michaelheap.com

3 个赞