Antes de mais nada, sou novato em Ruby on Rails e no desenvolvimento de plugins do Discourse, então, se houver uma direção melhor, agradeceria.
Visão Geral
Tenho um fork interno de um plugin do Discourse (discourse-ldap-auth) que estou importando via git clone. Este fork de plugin requer um fork de Gem (omniauth-ldap) que estou importando via Gemfile, anexando a declaração gem com uma URL git interna no hook after_bundle_exec do aplicativo. O aplicativo falha ao iniciar durante a reconstrução porque não consegue encontrar a gem, mesmo que a gem pareça instalar com sucesso anteriormente na saída da reconstrução.
Detalhes
Temos uma instância interna de Discourse de longa data onde os usuários eram obrigados a se inscrever com seu e-mail corporativo. Recentemente, adicionamos o plugin discourse-ldap-auth para usar o mesmo login de outros sites da intranet. Essa configuração funciona, mas os prompts para os usuários são confusos. A maioria dos outros sites da intranet exige um nome de usuário, mas nossa instância do Discourse exige um endereço de e-mail para associá-lo a quaisquer contas existentes. Gostaria de alterar os campos para solicitar um endereço de e-mail.
O omniauth-ldap, que parece ser de onde vêm os textos do formulário, não tem suporte para personalizar campos como outros plugins do Discourse. Eu fiz um fork disso (e do discourse-ldap-auth) internamente para adicionar chamadas a i18n.t com a esperança de que eu possa personalizar os campos, já que agora eles são específicos da região. O fork é chamado omniauth-ldap-i18n. Adicionei isso ao meu app.yml para obter o fork omniauth-ldap no Gemfile:
hooks:
after_bundle_exec:
- exec:
cd: $home
cmd:
- echo "gem 'omniauth-ldap-i18n', git:'https://internal-git-service/omniauth-ldap-i18n.git'" >> Gemfile
- su discourse -c 'bundle config unset deployment'
- su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'
Dentro do fork discourse-ldap-auth plugin.rb:
gem 'omniauth-ldap-i18n', '1.0.0'
A saída ao reconstruir o aplicativo:
Using omniauth-ldap-i18n 1.0.0 from https://internal-git-service/omniauth-ldap-i18n.git (at master@c3cb3ed)
Bundle complete! 127 dependências de Gemfile, 187 gems agora instaladas.
Gems nos grupos 'test' e 'development' não foram instaladas.
Gems empacotadas são instaladas em './vendor/bundle'
A saída de erro antes de falhar ao iniciar:
I, [2022-09-10T18:18:08.389538 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
ERROR: Could not find a valid gem 'omniauth-ldap-i18n' (= 1.0.0) in any repository
ERROR: Possible alternatives: omniauth-ldap-ifpe, omniauth-ldap, omniauth-ldap2, omniauth-aladin, omniauth-aliyun, omniauth-apihub, omniauth-learn, omniauth-lifen, omniauth-7digital, omniauth-aai
I, [2022-09-10T18:18:47.658658 #1] INFO -- : gem install pyu-ruby-sasl -v 0.0.3.3 -i /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6 --no-document --ignore-dependencies --no-user-install
Successfully installed pyu-ruby-sasl-0.0.3.3
1 gem installed
gem install rubyntlm -v 0.6.3 -i /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6 --no-document --ignore-dependencies --no-user-install
Successfully installed rubyntlm-0.6.3
1 gem installed
gem install net-ldap -v 0.17.1 -i /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6 --no-document --ignore-dependencies --no-user-install
Successfully installed net-ldap-0.17.1
1 gem installed
gem install omniauth-ldap-i18n -v 1.0.0 -i /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6 --no-document --ignore-dependencies --no-user-install
You are specifying the gem omniauth-ldap-i18n in /var/www/discourse/plugins/discourse-ldap-auth/plugin.rb, however it does not exist!
Looked for: /var/www/discourse/plugins/discourse-ldap-auth/gems/2.7.6/specifications/omniauth-ldap-i18n-1.0.0.gemspec