Usando gems ruby "customizadas"

Olá! Tenho tido dificuldades com isso há alguns dias, então qualquer ajuda é bem-vinda!

Estou desenvolvendo um fork de um plugin que requer a gem ruby discordrb. Por qualquer motivo, a versão mais atualizada em discordrb | RubyGems.org | your community gem host é a 3.4.0, que tem cerca de dois anos e está com bugs.

Felizmente, existe uma versão atualizada do plugin que existe aqui GitHub - shardlab/discordrb: Discord API for Ruby, mas que não pôde ser publicada no RubyGems :confused:

Como posso usar a versão do github desta gem/dependência? Sinto que já tentei de tudo.

1 curtida

Você já viu?: Discord Bot Construction Kit 🤖

Ainda está em desenvolvimento ativo. Falando com os desenvolvedores recentemente, a próxima versão sairá “quando estiver pronta”. Entre outras coisas, eles estão trabalhando no suporte a Threads.

Estas são a mesma coisa. É apenas que o documento da gem só reivindica 3.4.0 como a mais recente. O outro é o repositório oficial. Se você clicar no link da Página Inicial no seu primeiro link, ele o levará ao seu segundo link ;). Não tenho ideia de por que o documento da gem não lista 3.4.1.

Você pode referenciar um repositório do GitHub se realmente precisar: https://stackoverflow.com/questions/2823492/install-gem-from-github-branch

1 curtida

Eu vi! Tenho certeza de que nosso plugin é um fork de um fork disso. Precisamos de uma lógica específica em nosso caso, então faz sentido desenvolver nossa própria versão.

Como isso ficaria no contexto do Discourse? Sinto que já tentei todos os métodos de declarar a dependência via github em plugin.rb (verifique o histórico de nossos commits :smile:)

image

Nossa compilação falha com qualquer sintaxe de gem que eu tentei que aponta para a origem do github. Tenho certeza de que isso tem a ver com como discourse/lib/plugin_gem.rb at main · discourse/discourse · GitHub tenta encontrar o arquivo .gemspec para gems de plugin. Você poderia me dar os passos para uma solução alternativa?

1 curtida

Olá @FerrariFlunker
Aqui está um exemplo de um plugin oficial que usa uma cópia local da gem holidays. Acho que você pode usar um padrão semelhante no seu caso.

Veja como ele é incluído.

1 curtida

Uma versão local do repositório git (nota: não pode ser um submódulo, tem que ser uma cópia local verdadeira) e as linhas de inclusão de libdir funcionaram perfeitamente! Muito obrigado pela ajuda, é incrivelmente apreciado @fzngagan e @merefield :+1:

Espero que este tópico ajude outras pessoas a encontrar esta resposta, tem sido uma jornada e tanto para descobrir isso :smile:

2 curtidas

Você também pode publicar a gem através do GitHub Packages. Publishing a Ruby Gem to the GitHub Package Registry | michaelheap.com

3 curtidas